<android第一行代码(第2版)p329>
在dependencies闭包中添加如下内容:
我现在是用的AndroidStudio3.4,后期新版本添加依赖的方式可能有变动,如果下面这个不能用可以去百度查一下对应版本如何添加依赖。
implementation 'com.squareup.okhttp3:okhttp:3.4.1'
发起一条HTTP请求
0.若发送的是post请求,先构建一个RequestBody对象来存放待提交的参数。(若为get请求,直接忽略这一步。)
RequestBody requestBody = new FormBody.Builder()
.add("username","admin")
.add("password","123456")
.build();
1.创建一个Request对象,在最后的build方法之前连缀其他方法来丰富这个Request对象。(比如,此处用url方法来设置目标网址)
Request request = new Request.Builder()
.url("http://www.baidu.com")
//若是get请求不需要这一句
.post(requestBody)
.build();
2.调用okhttpclien的newcall方法来创建一个call对象,并调用它的execute方法来发送请求并获取服务器返回的数据。
OkHttpClient client = new OkHttpClient();
Response response = null;
//发送请求并获取服务器返回的数据
response = client.newCall(request).execute();
3.得到返回的具体内容
String responseData = response.body().string();
okhttp的最佳写法:
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);
}
public static void main(String[] args) {
/**
* 注意:回调接口都是在子线程中进行的,因此不可以执行任何UI操作,除非用runOnUiThread()进行线程切换
*/
HttpUtil.sendOkHttpRequest("http://www.baidu.com", new okhttp3.Callback(){
@Override
public void onFailure(Call call, IOException e) {
//在这里对异常情况进行处理
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//得到服务器返回的具体内容
String responseData = response.body().string();
}
});
}