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){
//在这里对异常情况进行处理
}
});