android开发——okhttp的简单使用
2019-01-22 17:24
225 查看
OKHttp支持同步请求和异步请求,建议使用封装为工具类的方法。https://blog.csdn.net/river66/article/details/86570757
1、get的同步请求(同步请求时需要开启子线程,请求成功后需要跳转到UI线程修改UI)
[code]public void getDatasync(){ new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象 Request request = new Request.Builder() .url("http://www.baidu.com")//请求接口。如果需要传参拼接到接口后面。 .build();//创建Request 对象 Response response = null; response = client.newCall(request).execute();//得到Response 对象 if (response.isSuccessful()) { Log.d("kwwl","response.code()=="+response.code()); Log.d("kwwl","response.message()=="+response.message()); Log.d("kwwl","res=="+response.body().string()); //此时的代码执行在子线程,修改UI的操作请使用handler跳转到UI线程。 } } catch (Exception e) { e.printStackTrace(); } } }).start(); }
打印结果:
response.code()==200;
response.message()==OK;
res=={“code”:200,”message”:success};
tip:response.body().string()只能调用一次,第二字调用返回null,原因:此方法是流操作
2、get异步请求(回调方法是执行在子线程中的,更新UI还是需要跳转到UI线程中才可以修改)
[code]public void getDataAsync() { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://www.baidu.com") .build(); client.newCall(request).enqueue(new Callback() {//队列queue->异步 @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){//回调的方法执行在子线程。 Log.d("kwwl","获取数据成功了"); Log.d("kwwl","response.code()=="+response.code()); Log.d("kwwl","response.body().string()=="+response.body().string()); } } }); }
tip:不管是同步还是异步,response.body().string()方法必须放在子线程中
3、可以带普通参数的post异步请求(使用到了formBody)
[code]public void postDataWithParam(){ FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体 formBody.add("username","river");//传递键值对参数 Request request = new Request.Builder()//创建Request 对象。 .url("http://www.baidu.com") .post(formBody.build())//传递请求体 .build(); client.newCall(request).enqueue(new Callback() {...});//省略回调方法 }
4、可以带json参数或者file对象的post异步请求(使用到了RequestBody)
[code]public void jsonPost(String url,String json){ OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象。 MediaType JSON = MediaType.parse("application/json; charset=utf-8");//数据类型为json格式 RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(new Callback() {。。。});//此处省略回调方法。 } public void filePost(String url,File file){ OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象。 MediaType fileType = MediaType.parse("File/*");//数据类型为json格式, RequestBody body = RequestBody.create(fileType , file ); Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(new Callback() {。。。});//此处省略回调方法。 }
5、可以同时带键值对和file对象的post异步请求
[code]public void multipartBody(String url,File file){ OkHttpClient client = new OkHttpClient(); MultipartBody multipartBody =new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("groupId",""+groupId)//添加键值对参数 .addFormDataPart("title","title") .addFormDataPart("file",file.getName(),RequestBody.create(MediaType.parse("file/*"), file))//添加文件 .build(); final Request request = new Request.Builder() .url(url) .post(multipartBody) .build(); client.newCall(request).enqueue(new Callback() {...}); }
如果对您有用的话赞一下呗!或者评论66!也好啊!谢谢谢谢~
相关文章推荐
- Android开发---OkHttp简单封装
- Android 当前比较新的框架组合,Retrofit,OKHttp,RXJava的一些简单使用
- Android杂谈(14)OKHttp+Gson的简单使用
- Android开发之OkHttpUtils的具体使用方法
- 【Android游戏开发二十一】Android os设备谎言分辨率的解决方案!以及简单阐述游戏引擎如何使用!
- android游戏开发框架libgdx的使用(十八)—简单的AVG游戏效果实现
- android AsyncHttp的简单使用与封装
- 【Android游戏开发二十一】Android os设备谎言分辨率的解决方案!以及简单阐述游戏引擎如何使用!
- Android 开发学习记录(2)---- httpclient使用(一)
- 使用C++ REST SDK开发简单的Web(HTTP)服务
- Android开发笔记(一百一十)使用http框架上传文件
- 使用Eclipse开发Android源码___http://www.wuphone.com/859
- Android HttpClient && HttpPost简单使用
- Android 开发学习记录(4)---- httpclient使用(三)
- Android开发,使用Volley框架进行简单数据交互
- Android Http简单使用实现登录校园网App
- Android HttpURLConnection的简单使用
- android快捷开发之Retrofit网络加载框架的简单使用
- Android--简单开发和使用ContentProvider数据共享
- 【按住你的心】——Android开发Button控件的简单使用