1. 簡介
okhttp是一個(gè)高效的http請求客戶端,它有如下一些特點(diǎn):
1)使用連接池技術(shù),減少延遲
2)同一個(gè)主機(jī)請求,共享一個(gè)socket
3)使用壓縮請求,減少下載數(shù)據(jù)的大小
4)可以緩存數(shù)據(jù),對于同一個(gè)請求
2. java使用依賴
maven最新依賴
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.2</version>
</dependency>
3. 代碼示例
下面顯示一個(gè)簡單的同步get請求
package net_;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class OkHttpTest {
private static final OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws IOException {
String url = "http://www.itdecent.cn/u/a3303ebda4f6";
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
if(!response.isSuccessful()){
System.out.println("request unsuccessful");
}else {
System.out.println(response.body().string());
}
}
}
下面是執(zhí)行返回的結(jié)果:

執(zhí)行成功結(jié)果.png
4. 執(zhí)行過程簡要說明:
1)初始化生成一個(gè)client客戶端
2)定義一個(gè)請求Request,請求參數(shù)材料只有一個(gè),就是目標(biāo)請求的url
3)由客戶端執(zhí)行請求方法,參數(shù)材料即為上面的Request,結(jié)果就是一個(gè)執(zhí)行結(jié)果Response
4)我們從執(zhí)行結(jié)果Response中可以得到一個(gè)有用的信息,比如請求是否成功,以及請求返回的數(shù)據(jù)體結(jié)果
5. POST請求及其它一些參數(shù)
public static void post(){
String url = "http://www.itdecent.cn/u/a3303ebda4f6";
FormBody.Builder formBodyBuilder = new FormBody.Builder();
formBodyBuilder.add("paramName1","param alue1");
formBodyBuilder.add("paramName2","param value2");
Request request = new Request.Builder().url(url).post(formBodyBuilder.build()).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
String result = response.body().string();
System.out.println(result);
}
});
}
注:post請求與get請求區(qū)別
1)在構(gòu)造Request請求時(shí),指定post方法,上面的一個(gè)示例中并沒有指定get方法,get是一個(gè)缺省的方法,默認(rèn)可以不寫
2)post請求時(shí),需要傳遞額外的表單參數(shù)FormBody.build
- 換了一個(gè)處理響應(yīng)response的方法,使用了enqueue方法,參數(shù)為Callback實(shí)現(xiàn)的匿名類