OkHttp简介
OkHttp是由Square公司开发的,除了OkHttp 之外,还开发了 Picasso、Retrofit等著名的开源项目,现在已经成了广大Android开发者首选的网络通信库。OkHttp地址是:https://github.com/square/okhttp。
添加依赖
//OkHttp(网络请求框架)
implementation 'com.squareup.okhttp3:okhttp:3.4.1'
同步请求
GET
想要发送一个请求呢,这两个对象是不可少的,当然这里还只是一个空的请求
// 实例化OkHttpClient对象
OkHttpClient client = new OkHttpClient();
// 实例化Request对象(空)
Request request=new Request.Builder().build();
我们先来加上一个目标地址
// 实例化Request对象(空)
Request request=new Request.Builder()
.url("www.baidu.com")
.build();
发送请求,获得数据,由于这里有IO操作,所以try catch一下
try {
// Response对象存储的就是获取的数据
Response response=client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
然后将上面Reeponse得到的数据转化成具体内容
String data = response.body().string();
POST
POST请求的话和GET请求差不多,就多了个RequestBody对象,用来携带传入的参数
//实例化RequestBody对象
RequestBody requestBody=new FormBody.Builder()
.add("","")
.build();
然后在Request中调用.post()方法,传入RequestBody
// 实例化Request对象
Request request = new Request.Builder()
.url("www.baidu.com")
.post(requestBody)
.build();
其他和GET方式完全一样,如下
// 实例化OkHttpClient对象
OkHttpClient client = new OkHttpClient();
//实例化RequestBody对象
RequestBody requestBody = new FormBody.Builder()
.add("", "")
.build();
// 实例化Request对象
Request request = new Request.Builder()
.url("www.baidu.com")
.post(requestBody)
.build();
try {
// Response对象存储的就是获取的数据
Response response = client.newCall(request).execute();
String data = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
异步请求
异步请求和同步请求的区别就是:发送请求那一块,同步请求是Response response = client.newCall(request).execute();
,而异步请求是:client.newCall(request).enqueue(new Callback());
GET
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("www.baidu.com")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
setUI(responseData);
}
});
POST
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new FormBody.Builder()
.add("", "")
.build();
Request request = new Request.Builder()
.url("www.baidu.com")
.post(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
setUI(responseData);
}
});
相信很多小伙伴有一个疑问,同步请求、异步请求、GET、POST我都会了,那我他们的区别是什么呢?
同步请求、异步请求区别
用简单通俗一点的语言说一下:
同步请求:同步请求是发送请求后,只能等服务器处理完这个请求,才能去干别的
异步请求:异步请求是发送请求后,服务器会在一边处理请求,中途可以去干别的
优劣:异步请求的优势很明显,所以开发中能用异步请求就用异步请求
GET、POST请求方式区别
这是来自W3school的表格,可以看到最后一栏,GET方式会暴露数据,而POST不会,所以显而易见,POST的请求方式是更加安全的!
如果你觉得本文还不算太差,就点个赞吧!