Android中OkHttp的使用(詳解)

1.先在項目中添加OkHttp庫的依賴

dependencies{

compile 'com.squareup.okhttp3:okhttp:3.4.1'

}

 

2.初始化

OkHttp框架的核心類是OkHttpClient,此類可直接實例化。由於OkHttpClient內部處理了併發,多線程和Socket重用等問題,爲了節省資源,整個應用中使用一個OkHttpClient對象即可,可以對它做Singleton封裝。

OkHttpClient okHttpClient = new OkHttpClient();

 

3.http請求的構建

3.1GEt請求

代表Http請求的類是Request,該類使用構造器模式,最簡單的構造GET請求如下:

Request request = new Request.Builder() .url(url) .build();

 

3.2POST請求

要構造Post請求,在構建Request時增加請求體即可:

RequestBody formBody = new FormEncodingBuilder() .add("name", "Cuber") .add("age", "26") .build(); Request request = new Request.Builder() .url(url) .post(RequestBody) .build();

 

4.http請求的發送

調用OkHttpClient的newCall()方法來創建一個Call對象,並調用它的execute()方法來發送請求並獲取服務器返回的數據。

請求的發送有兩種形式,一種是直接同步執行,阻塞調用線程,直接返回結果;另一種是通過隊列異步執行,不阻塞調用線程,通過回調方法返回結果。如下所示:

 

4.1同步執行:

// 如果返回null,代表超時或沒有網絡連接

Response response = client.newCall(request).execute();

4.2異步回調:

Response response = client.newCall(request).enqueue(new Callback() {

@Override

public void onFailure(Request request, IOException e) {

//超時或沒有網絡連接

//注意:這裏是後臺線程!

}

@Override

public void onResponse(Response response) throws IOException {

//成功

//注意:這裏是後臺線程!

}

});

 

 

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