什么是okhttp呢
一个处理网络请求的开源项目,是安卓端最火热的轻量级框架
他的优点有:
HTTP/2 支持允许所有访问同一主机的请求共享一个socket
·利用连接池减少请求延迟(如果HTTP/2不可用)
·支持GZIP压缩
·响应缓存减少重复请求
-----------------------------------------------------------------
最低版本要求:
Android 2.3
Java1.7
------------------------------------------------------------------------
okhttp的理解并不难
怎么使用呢 一边使用一边理解吧
1导入依赖
ok的依赖
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
//日志拦截器依赖
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
---------------------------------------------------------------------------------------------------------
理解
一个人开始写信
创建邮箱
写完之后装进邮箱
准备配送
开始配送
配送成功和失败
成功则切换线程相当于打开信封
失败则中间出了问题
----------------------------------------------
public class Nation {
private static Nation nation;
public OkHttpClient okHttpClients;
public Handler handler= new Handler();
private Nation() {
//开始写信
okHttpClients = new OkHttpClient.Builder()
.readTimeout(5000,TimeUnit.MILLISECONDS)
.connectTimeout(5000,TimeUnit.MILLISECONDS)
.writeTimeout(5000,TimeUnit.MILLISECONDS)
.build();
}
//这是单例模式
public static synchronized Nation getInstance(){
if (nation==null){
nation = new Nation();
}
return nation;
}
public void doGet(String path, final DataCallBack dataCallBack){
//创建邮箱
Request.Builder builder = new Request.Builder();
//把写好的新给邮箱
builder.url(path);
//邮箱已收到准备配送
Request build = builder.build();
//开始去配送
Call call = okHttpClients.newCall(build);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String message = e.getMessage();
handler.post(new Runnable() {
@Override
public void run() {
dataCallBack.fainal(message);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
ResponseBody body = response.body();
final String string = body.string();
//记得切换线程
handler.post(new Runnable() {
@Override
public void run() {
dataCallBack.success(string);
}
});
}
});
}
//同样使用接口回调让外界拿到
public interface DataCallBack{
void success(String data);
void fainal(String fainal);
}
}
你理解了吗 请大家过目 非商业用途 如若转发请说明出处