okHttp使用及其優勢
阿新 • • 發佈:2019-01-23
最近okhttp網路請求比較火 ,本人在工作之餘也瞭解一下okhttp的特點及用法,希望對大家有用.
第一點:谷歌官方在6.0以後在android sdk已經移除了httpClient,加入我們okHttp.
第二點:okHttp支援SPDY(是谷歌開發的基於TCP的應用層協議,用於最小化網路延遲,提升網路速度,優化使用者的網路使用體驗. SPDY並不是一種替代http的協議,只是對http的一種增強.)允許連線在一主機的所有請求分享一個socket.如果SPDY不可用.會使用連線池來減少請求延遲.利用響應快取來避免重複的網路請求.即便是網路出現問題時,okhttp依然起作用.它將從常見的連結問題當中回覆.如果你的伺服器有多個IP地址,當地一個失敗時,okhttp會自動嘗試連線其他的地址.這對於IPV4和IPV6以及寄宿在多個數據中心的服務而言,是非常有必要的,所以okhttp的穩定性可以說是非常棒的. 第一點:谷歌官方在6.0以後在android
開啟已經移除了httpClient 加入了okHttp.
第三點:使用方式:
1.離線方式:
2. 新增依賴的方式;
1.通過maven倉庫搜尋下載okhttp.jar和okio.jar使用
2. gradle中加入`compile 'com.squareup.okhttp:okhttp:2.6.0'`即可
最常使用的get請求 同步請求:
//1.建立OkHttpClient例項物件 OkHttpClient okHttpClient = new OkHttpClient(); //home // ?index=0==>引數 String url = Constants.URLS.BASEURL + "home?index=0"; //2.建立一個請求 Request request = new Request.Builder() .get()//get方法 .url(url)//對應的url .build(); //3.發起請求 Response response = okHttpClient.newCall(request).execute(); //4.取出結果 String resultJsonString = response.body().string();
非同步的請求:
//1.建立OkHttpClient例項物件 OkHttpClient okHttpClient = new OkHttpClient(); //home // ?index=0==>引數 String url = Constants.URLS.BASEURL + "home?index=0"; //2.建立一個請求 Request request = new Request.Builder() .get()//get方法 .url(url)//對應的url .build(); //3.發起請求 okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { //請求成功 } @Override public void onResponse(Response response) throws IOException { //請求失敗 } });
引數的拼接:訪問後臺伺服器 拼接相應的 引數.僅供參考
public static String getUrlParamsByMap(Map<String, Object> map) {
if (map == null) {
return "";
}
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, Object> entry : map.entrySet()) {
sb.append(entry.getKey() + "=" + entry.getValue());
sb.append("&");
}
String s = sb.toString();
if (s.endsWith("&")) {
s = s.substring(0, s.length() - 1);
}
return s;
}