implementation("com.squareup.okhttp3:okhttp:3.14.0")
添加此依赖,会自动下载两个库:OkHttp库、Okio库(是前者的通信基础)。
OkHttpClient client = new OkHttpClient();
Request对象
:Request request = new Request.Builder().build();
Request request = new Request.Builder()
.url("https://www.baidu.com")
.build();
Call对象
,
并调用它的execute()
方法发送请求
,
并获取服务器
返回的数据:Response response = client.newCall(request).execute();
String responseData = response.body().string();
如果发起一条POST请求,会比GET复杂些;
RequestBody
对象存放待提交的参数
:RequestBody requestBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "123456")
.build();
Request.Builder
中以RequestBody
对象为传入的参数调用post()
方法,:Request request = new Request.Builder()
.url("http://www.baidu.com")
.post(requestBody)
.build();
GET
请求一样了,
调用execute()
方法发送请求并获取服务器返回的数据即可。另外注意OkHttp可以把最后执行的execute()
方法换成enqueue(callback)
,
即调用enqueue()
并接收一个框架提供的okhttp3.Callback
接口;
public static void sendOkHttpRequest(String address, okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(address).build();
client.newCall(request).enqueue(callback);//enqueue方法内部已经开好了子线程
}
使用时,复写okhttp3.Callback
的
onResponse()
和onFailure()
两个方法,
处理成功请求
和请求失败
的情况;
sendOkHttpRequest("https://www.baidu.com", new okhttp3.Callback(){
@Override
public void onResponse(Call call, Response response) throws IOException{
//得到服务器返回的具体数据
String reponseData = reponse.body().string();
}
@Override
public void onFailure(Call call, IOException e){
//在这里对异常情况进行处理
}
});