在使用之前在grale(app)中添加依赖
implementation 'com.squareup.okhttp3:okhttp:3.10.0'//版本可以到官网上查看最新的
1.1异步Get请求
- 创建一个OkHttpClient的对象
- 构造Request对象
- 构建一个Call对象
- 通过call.enqueue(new CallBack(){})方法提交异步请求
//okHttp3的异步get的请求
String url="http://www.baidu.com";
OkHttpClient okHttpClient=new OkHttpClient();
final Request request=new Request.Builder().url(url)
.get()//默认就是get请求,可以不写
.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 {
//请求成功的处理
}
});
1.2同步Get请求
- 创建一个OkHttpClient的对象
- 构造Request对象
- 构建一个Call对象
- 同步的方式会阻塞调用线程,所一需要在子线程中执行,否则可能会引起ANR异常。Android3.0以后已经步允许在子线程访问网络。最后同call.execute()进行提交。
//同步Get请求
String url="http://www.baidu.com";
OkHttpClient okHttpClient=new OkHttpClient();
Request request=new Request.Builder().url(url).build();
final Call call=okHttpClient.newCall(request);
//创建一个子线程
new Thread(new Runnable() {
@Override
public void run() {
//获得响应的对象
try {
Response response=call.execute();
//对象响应的Response对象进行处理
} catch (IOException e) {
e.printStackTrace();
}
}
});
参考链接:https://www.jianshu.com/p/da4a806e599b
https://www.jianshu.com/p/37e26f4ea57b
网友评论