1. 程式人生 > >okhttp 日誌攔截器Logging-interceptor

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檔案配置好要攔