okhttp 日誌攔截器Logging-interceptor
okhttp是目前使用及其廣泛的Android網路框架,可以由使用者高度定製,這是該框架最大的優勢之一。okhttp的用法,就不在此累述了,今天給大家分享一下給okhttp新增日誌攔截,列印的方法。
先上程式碼:
public class LoggingInterceptor implements Interceptor {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
//這個chain裡面包含了request和response,所以你要什麼都可以從這裡拿
Request request = chain.request();
long t1 = System.nanoTime();//請求發起的時間
logger.info(String.format("傳送請求 %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();//收到響應的時間
//這裡不能直接使用response.body().string()的方式輸出日誌
//因為response.body().string()之後,response中的流會被關閉,程式會報錯,我們需要創建出一
//個新的response給應用層處理
ResponseBody responseBody = response.peekBody(1024 * 1024);
logger.info(String.format("接收響應: [%s] %n返回json:【%s】 %.1fms%n%s",
response.request().url(),
responseBody.string(),
(t2 - t1) / 1e6 d,
response.headers()));
return response;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
好了,寫好攔截器的類,接下來我們看看如何使用:
okhttp的使用方式:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
Request request = new Request.Builder()
.url("your url")
.header("User-Agent", "OkHttp Example")
.build();
Response response = client.newCall(request).execute();
response.body().close();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
Retrofit的使用方式:
//建立OkHttpClient
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new CommonIntercepter())
.build();
retrofit = new Retrofit.Builder()
.baseUrl(Urls.baseUrl)
.client(client)//新增自定義OkHttpClient
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
下面是日誌輸出:
相關推薦
okhttp 日誌攔截器Logging-interceptor
okhttp是目前使用及其廣泛的Android網路框架,可以由使用者高度定製,這是該框架最大的優勢之一。okhttp的用法,就不在此累述了,今天給大家分享一下給okhttp新增日誌攔截,列印的方法。 先上程式碼: public class LoggingIntercep
android,retrofit,okhttp,日誌攔截器,使用攔截器Interceptor統一列印請求與響應的json
可以打印出傳遞的引數以及返回的結果 : 最下面有完整的 retrofit 案例 ------------------retrofit的使用----START-------------------------- 首先 : 依賴 : compile 'com.squ
OkHttp的簡單使用以及使用單例模式新增日誌攔截器
okhttp的簡單使用,主要包含: 一般的get請求 一般的post請求 基於Http的檔案上傳 檔案下載 載入圖片 支援請求回撥,直接返回物件、物件集合 支援session的保持 //新增依賴 implementation 'com.squareup.okhttp3:okh
okHttp的日誌攔截器
日誌攔截器的分類: a.網路攔截器 b.應用攔截器 建立一個類 /** * 日誌攔截器類,請求來了,先在這裡進行處理,可以得到發請求到得到請求消耗多久的時間 * 作用:可以排查網路請求速度慢的根本原因 * 1.有可能是我們在請求網路時,客戶端寫了一堆業務邏輯 * 2.有可能
日誌攔截器 +OKHTTP二次封裝
日誌攔截器類, 請求來了,先在這裡進行處理,可以得到發請求到得到請求消耗多久的時間 作用:可以排查網路請求速度慢的根本原因 1.有可能是我們在請求網路時,客戶端寫了一堆業務邏輯 2.有可能是伺服器端,寫的有問題 3.有可能就是網速不給力 OK
Okhttp二次封裝,OkhttpClient使用單例模式封裝,回撥封裝成主執行緒,日誌攔截器
public class HttpUtils { private static final String TAG = "HttpUtils"; private static volatile HttpUtils instance;
SpringMVC的攔截器(Interceptor)和過濾器(Filter)的區別與聯系
get err 實例 分享 切面 簡介 () lee XML 一 簡介 (1)過濾器: 依賴於servlet容器。在實現上基於函數回調,可以對幾乎所有請求進行過濾,但是缺點是一個過濾器實例只能在容器初始化時調用一次。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取
Mybatis那些事-攔截器(Plugin+Interceptor)
uil number lin title 對象 cut collect chm source 作者:yhjyumi的專欄 Mybatis的攔截器實現機制,使用的是JDK的InvocationHandler. 當我們調用ParameterHandler,ResultSe
Hadoop生態圈-Flume的組件之自定義攔截器(interceptor)
events nbsp sin capacity figure IV mem nap code Hadoop生態圈-Flume的組件之自定義攔截器(interceptor)
android 日誌攔截器
package com.ppmoney.jde.common.http; import android.util.Log; import java.io.IOException; import okhttp3.Interceptor; import okhttp3.Request; impo
Retrofit2.0新增日誌攔截器列印URL一級返回資料
//定製OkHttp OkHttpClient.Builder httpClientBuilder = new OkHttpClient .Builder(); if (BuildConfig.DEBUG) {//釋出版本不再列印 // 日誌顯示級別
spring中過濾器(filter)、攔截器(interceptor)和切面(aop)的執行順序
1.程式執行的順序是先進過濾器,再進攔截器,最後進切面。注意:如果攔截器中preHandle方法返回的為false時,則無法進入切面,例子如下 @RestController @RequestMapping("/user") public class UserController {
Struts2學習——攔截器(interceptor)學習
攔截器(interceptor)是struts2框架的又一主要功能,他是基於過濾器(Filter)來開發的,主要功能就是對使用者的請求進行包裝,處理等等。 例如,前面學習的Action中獲取引數的幾種方式,都是在請求到達Action之前,在攔截器中進行獲取並封裝的,我們在Act
攔截器(Interceptor)和過濾器(Filter)的執行順序和區別
一、引言 本來想記錄一下關於使用者登陸和登陸之後的許可權管理、選單管理的問題,想到解決這個問題用到Interceptor,但想到了Interceptor,就想到了Filter,於是就想說一下它們的執行順序和區別。關於Interceptor解決許可權和選單管理的問題,在放
Retrofit 和 rxjava2的簡單使用和封裝utils 和日誌攔截器
依賴*********注意網路許可權 //rxjava依賴 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2
OkHttp五大攔截器(自己專業整理)
一、什麼是OkHttp3 (1)定義: OkHttp3是一個處理網路請求的開源專案,是目前最火的網路框架,作者是Square公司, 用於代替Android提供的HttpConnection和HttpClient。** (2)OkHttp的特點 1、是基於
Android : 封裝Http工具類,以及日誌攔截器的工具包
這個沒有什麼好說的 同標題 package soexample.umeng.com.okhttp.utils; import android.os.Environment; import java.io.File; import java.io.IOException; import
Flume中的攔截器(Interceptor)介紹與使用
Flume中的攔截器(interceptor),使用者Source讀取events傳送到Sink的時候,在events header中加入一些有用的資訊,或者對events的內容進行過濾,完成初步的資料清洗。這在實際業務場景中非常有用,Flume-ng 1.6
Okhttp日誌攔截
Http請求 public class HttpUtils { public static String get(String urlString){ OkHttpClient okHttpClient = new OkHttpClient.Builder()
過濾器(Filter)與攔截器(Interceptor)區別
過濾器(Filter)與攔截器(Interceptor)區別 過濾器(Filter) Servlet中的過濾器Filter是實現了javax.servlet.Filter介面的伺服器端程式,主要的用途是設定字符集、控制權限、控制轉向、做一些業務邏輯判斷等。其工作原理是,只要你在web.xml檔案配置好要攔