Okhttp使用
okhttp使用
2019-03-31-20:48:45 云林原创
一、okhttp介绍:
1、okhttp开源库出自square公司,是一个优秀的网络请求框架,它基于httpurlconnectiond的封装,支持get/post请求,文件的上传和下载,图片的加载,让写法更加简单,可以处理更加复杂的网络请求。
2、okhttp可是实现的功能
- get/post同步、异步请求
- 文件的上传,下载
- 图片的加载
- 请求回调等
3、okhttp的特点
- 响应缓存
- 支持gzip压缩
- 支持websocket
- 多ip切换
- 减少连接池请求延时
二、okhttp请求准备
##1、okhttp的依赖的引入
module的gradle中添加
--------------------------------------------------------
compile 'com.squareup.okhttp3:okhttp:3.5.0'
--------------------------------------------------------
然后同步一下项目即可。
okhttp有自己的官网,可在官网上查询最新依赖,官网网址:okhttp官网
##2、okhttp中添加权限
<uses-permission android:name="android.permission.internet"></uses-permission> <uses-permission android:name="android.permission.read_external_storage"></uses-permission> <uses-permission android:name="android.permission.write_external_storage"></uses-permission> <uses-permission android:name="android.permission.access_network_state"></uses-permission>
三、okhttp进行get请求
get 请求只需要四步即可完成:
1 . 获取okhttpclient对象:
okhttpclient client = new okhttpclient();
2 . 构造request对象:
request request = new request.builder()
.get()
.url("https:www.baidu.com")
.build();
3 . 将request封装为call:
call call = client.newcall(request);
4 . 根据需要调用同步或者异步请求方法
同步调用
//同步调用,返回response,
response response = call.execute();
异步调用
//异步调用,并设置回调函数 call.enqueue(new callback() { //请求失败调用 @override public void onfailure(call call, ioexception e) { toast.maketext(okhttpactivitydemo.this, "get failed", toast.length_short).show(); } //请求成功调用 @override public void onresponse(call call, final response response) throws ioexception { final string res = response.body().string(); runonuithread(new runnable() { @override public void run() { toast.maketext(okhttpactivitydemo.this, "get success", toast.length_short).show(); } }); } });
注意:
在异步调用时,回调函数是在子线程,不能在子线程更新ui,需要借助于 runonuithread() 方法或者 handler 来处理
四、okhttp进行post请求提交键值对:
post 请求和进行 get 请求很类似。
1 、获取okhttpclient对象:
2、使用formbody构建包含键值对类型参数的请求体:
formbody formbody = new formbody.builder()
.add("username", "admin")
.add("password", "123")
.build();
3、 构建request,将formbody作为post方法的参数传入
request request = new request.builder() .url("http://www.jianshu.com/") .post(formbody) .build();
4、将request封装为call
call call = client.newcall(request);
5 . 调用请求,重写回调方法
call.enqueue(new callback() { @override public void onfailure(call call, ioexception e) { toast.maketext(okhttpactivitydemo.this, "post failed", toast.length_short).show(); } @override public void onresponse(call call, response response) throws ioexception { final string res = response.body().string(); runonuithread(new runnable() { @override public void run() {
toast.maketext(okhttpactivitydemo.this, "post success", toast.length_short).show();
} }); } });
五、后记
以上就是 okhttp 常用get和set请求的总结,当热还有文件的上传和下载等。