每天記錄學習的新知識:OKHTTP簡單使用過一遍

參考和轉載地址:

參考文章地址:OkHttp基礎概念解釋

轉載文章地址:Okhttp3基本使用

官方地址 https://github.com/square/okhttp

簡介OKHTTP

square公司出品,OkHttp官網GitHub地址

1. 優勢

  1. 支持HTTP2/SPDY,如果SPDY不可用,則通過連接池來減少請求延時

  2. socket自動選擇最好路線,並支持自動重連,擁有自動維護的socket連接池,減少握手次數,減少了請求延遲,共享Socket,減少對服務器的請求次數

  3. 基於Headers的緩存策略減少重複的網絡請求

  4. 擁有Interceptors輕鬆處理請求與響應(自動處理GZip壓縮),減少了下載大小

  5. 當網絡出現問題時,OkHttp 會自動重試一個主機的多個 IP 地址

  6. 使用簡單,支持同步阻塞調用和帶回調的異步調用

2. 使用

2.1 添加依賴和權限

最新版本,可以進入官網查看。

    implementation 'com.squareup.okhttp3:okhttp:3.13.1'
<uses-permission android:name="android.permission.INTERNET" />

2.2 Get同步請求:

Response response = call.execute();

2.3 Get異步請求

                String url = "http://wwww.baidu.com";
                OkHttpClient okHttpClient = new OkHttpClient();
                final Request request = new Request.Builder()
                        .url(url)
                        .get()//默認就是GET請求,可以不寫
                        .build();
                Call call = okHttpClient.newCall(request);
                call.enqueue(new Callback() {
                    @Override
                    public void onFailure(@NonNull Call call, IOException e) {
                        LogUtils.e(TAG, "onFailure: ");
                    }

                    @Override
                    public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {

                        String content = response.body().string();
                        LogUtils.i(TAG, "onResponse: " + content);
                    }
                });

注:response.body().string(); 只能調用一次,再次調用不會再有返回結果,所以需要緩存一下。

2.4 Post請求

post請求和get請求的區別就是,post請求需要構建一個傳參的RequestBody,RequestBody需要指定MediaType,用於描述請求/響應 body 的內容類型。

Post請求攜帶String

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章