2016-05-08 45 views
4

我試着使用refrofit2,科特林和記錄攔截記錄所有的請求(與網絡攔截):HttpLoggingInterceptor不改裝記錄2

  • 改造: 「2.0.2」
  • okhttp3:「 3.2.0"
  • com.squareup.okhttp3:測井攔截3.2.0

像:

val interceptor = HttpLoggingInterceptor() 
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 

    val okHttpClient = OkHttpClient.Builder() 
     .addNetworkInterceptor(interceptor) // same for .addInterceptor(...) 
     .connectTimeout(30, TimeUnit.SECONDS) //Backend is really slow 
     .writeTimeout(30, TimeUnit.SECONDS) 
     .readTimeout(30, TimeUnit.SECONDS) 
     .build() 

    sRestAdapter = Retrofit.Builder() 
     .client(okHttpClient) 
     .baseUrl(if (host.endsWith("/")) host else "$host/") 
     .addConverterFactory(GsonConverterFactory.create(gson())) 
     .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
     .build() 

它只是打印:

D/OkHttp: --> GET url... 
D/OkHttp: --> END GET 

這是怎麼回事?

---------------編輯--------

錯誤做在主線程上的請求沒有被記錄器顯示,所以要小心。

+1

http://stackoverflow.com/questions/33141407/logging-in-retrofit-2-0/38890345#38890345 –

回答

8

而不是

val okHttpClient = OkHttpClient.Builder() 
    .addNetworkInterceptor(interceptor) 
    ... 

你應該是這樣的:

val okHttpClient = OkHttpClient.Builder() 
    .addInterceptor(interceptor) 
    ... 

addNetworkInterceptor()戲劇與觀察單個網絡請求和響應攔截,而addInterceptor()增加攔截器,觀察滿量程每個呼叫:從連接建立(如果有的話)直到​​選擇響應源之後(原始服務器,緩存或兩者)。

編輯

錯誤做在主線程上的請求沒有被記錄器顯示,所以一定要小心

做在主線程上的網絡是不是一個「普通」的錯誤。這會導致你的應用程序被NetworkOnMainThreadException系統殺死,而且這將在攔截器有機會運行之前發生。