Retrofit2列印 網路請求日誌

2021-07-13 23:00:44 字數 3515 閱讀 2319

在使用retrofit時,如果我們需要列印網路請求的日誌(諸如請求位址,引數,耗時,請求返回結果),

compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
在使用時,新增如下**:

//宣告日誌類

//設定日誌級別

//自定義okhttpclient

//新增***

//建立並指定自定義的okhttpclient

//建立介面服務類

taobaoapiservice taobaoapiservice = retrofit.create(taobaoapiservice.class);

這樣在我們的網路請求中便會有如下日誌列印。

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: --> get

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: --> end get

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: <-- 200 ok

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: server: tengine

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: date: fri, 24 jun 2016

07:31:03 gmt

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: content-type: text/html

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: transfer-encoding: chunked

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: connection: keep-alive

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: vary: accept-encoding

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: x-powered-by: php/5.4

.31六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊:

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: }

六月 24, 2016

3:31:04 下午 okhttp3.internal

.platform log

資訊: <-- end http (290-byte body)

如果列印的資料不符合要求,我們自定義列印資訊的內容和格式

這裡我們使用乙個自定的,具體**大致如下:

//列印請求耗時

syso("耗時:"+tookms+"ms");

//使用response獲得headers(),可以更新本地cookie。

syso("headers**********");

headers headers = response.headers();

syso(headers.tostring());

//獲得返回的body,注意此處不要使用responsebody.string()獲取返回資料,原因在於這個方法會消耗返回結果的資料(buffer)

responsebody responsebody = response.body();

//為了不消耗buffer,我們這裡使用source先獲得buffer物件,然後clone()後使用

bufferedsource source = responsebody.source();

source.request(long.max_value); // buffer the entire body.

//獲得返回的資料

buffer buffer = source.buffer();

//使用前clone()下,避免直接消耗

syso("response:" + buffer.clone().readstring(charset.forname("utf-8")));

return response;

}});**說明已新增注釋。需要額外說明一點就是syso函式只是做簡單列印,如下:

private

static

void

syso(string msg)

Retrofit2對https請求的實現(乾貨)

由於專案上傳到googleplay時被提醒傳輸資料方式不安全,故改用https加密傳輸。這裡我的專案裡用到retrofit2.2.0,但retrofit本身的okhttp不能直接請求證書不安全的https,所以得採取一些應急措施。首先我們在androidstudio裡的gradle依賴retrofi...

使用Retrofit2進行HTTP請求設定請求超時

採用retrofit2本身可以進行優雅的restful請求,但是無法設定請求超時時間,需要配合okhttp3來設定請求超時.新增依賴 compile com.squareup.okhttp3 logging interceptor 3.0.1 新增配置資訊並設定超時時間 connecttimeout...

No 2 列印沙漏

題目要求 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能...