代码,前提是先要导入一个OKIO.jar 包和一个OKHttp.jar 包java
// 后期写有 OkHttp 的get请求和post请求详解android
// OkHttp 网络框架的封装api
// 建立一个OkHttp OkHttpClient okHttpClient = new OkHttpClient(); // 建立一个Request final Request request = new Request.Builder().url("http://www.oschina.net/action/api/tweet_list").build(); // 建立一个Call Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { // 返回请求到的数据,至关于一个主线程 @Override public void onResponse(Response response) throws IOException { // TODO Auto-generated method stub // 拿到IO数据 InputStream byteStream = response.body().byteStream(); //拿到字符串 String string = response.body().string(); // 建立一个runOnUI runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 更新UI } }); } // @Override public void onFailure(Request request, IOException ioException) { // TODO Auto-generated method stub } });
下载器:网络
须要导入包:XUtils.jar 包app
代码:框架
// 建立HttpUtils private HttpUtils httpUtils = new HttpUtils(); private HttpHandler<File> httpHandler; //第一个参数下载APK的下载地址,第二个是存放地址,第三个参数是容许不容许续传,第四个建立一个下载的过程 httpHandler = httpUtils.download(apkUrl, "/sdcaard/" + System.currentTimeMillis() + "yidiantong.apk", true, new RequestCallBack<File>() { // 下载跟新的方法 @Override public void onLoading(long total, long current, boolean isUploading) { // TODO Auto-generated method stub super.onLoading(total, current, isUploading); my_Button.setText("正在下载..."); } // 下载跟新的方法 @Override public void onSuccess(ResponseInfo<File> arg0) { // TODO Auto-generated method stub my_Button.setText("下载完成"); // 获得下载到的APK的路径 //能够直接打开下载的APP进行安装 String path = arg0.result.getPath(); File file = new File(path); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(intent); } // 下载失败的方法 @Override public void onFailure(HttpException arg0, String arg1) { // TODO Auto-generated method stub my_Button.setText("下载失败"); } });
因为写的不是很详细,再来简单的补充一下ide
OkHttp的get请求和post请求post
get请求ui
//OkHttp的get请求方法 public void getRequest(View view) { //建立Request,存放数据的 final Request request = new Request.Builder().url("http://www.baidu.com").build(); //用到的OkHttpClient OkHttpClient okHttp = new OkHttpClient(); //执行者 Call call = okHttp.newCall(request); //执行代码块 call.enqueue(new Callback() { //请求失败的方法 @Override public void onFailure(Call call, IOException e) { mText.setText("请求失败"); } //请求成功的方法 @Override public void onResponse(Call call, Response response) throws IOException { //此方法此时不在主线程中 final String string = response.body().string(); //更细UI需在主线程中, runOnUIThread方法 runOnUiThread(new Runnable() { @Override public void run() { //更新UI mText.setText(string); } }); } }); }
post请求url
//post请求 public void posttRequest(View view) { //用到的OkHttpClient OkHttpClient okHttpClient = new OkHttpClient(); //建立FormBody.Buildy,保存传输的数据 FormBody.Builder formBody = new FormBody.Builder(); //调用add方法,方法采用 key,value 方法保存 //第一个参数,保存的是key, 第二个参数是value formBody.add("username", "18600703694"); formBody.add("password", "123456789"); //建立Request,存放数据的 Request request = new Request.Builder().url("提交地址").post(formBody.build()).build(); //执行者 Call call = okHttpClient.newCall(request); //执行代码块 call.enqueue(new Callback() { //请求失败的方法 @Override public void onFailure(Call call, IOException e) { } //请求成功的方法 @Override public void onResponse(Call call, Response response) throws IOException { //此方法此时不在主线程中 final String string = response.body().string(); //更细UI需在主线程中, runOnUIThread方法 runOnUiThread(new Runnable() { @Override public void run() { //更新UI mText.setText(string); } }); } }); }
OkHttp网络框架