refrofit2, kotlin 및 logging-interceptor를 사용하여 모든 요청 (네트워크 인터셉터 사용)을 기록하려고합니다.
처럼:
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
무슨 일이야?
--------------- 편집하다 --------
Main Thread에서 요청을 수행하는 오류는 로거에서 표시되지 않으므로주의하십시오.
대신에
val okHttpClient = OkHttpClient.Builder()
.addNetworkInterceptor(interceptor)
...
다음과 같은 것이 있어야합니다.
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(interceptor)
...
는 AS addNetworkInterceptor()
단일 네트워크 요청 및 응답을 관찰 인터셉터 함께 재생하는 동안 addInterceptor()
각 통화의 전체 범위 관찰 인터셉터 추가한다 (연결이 설정에서 (만약 있다면) 상기 응답 소스가 선택된 후까지를 하나 원 서버, 캐시, 아니면 둘다).
편집하다
메인 스레드에서 요청을 수행하는 오류는 로거에 표시되지 않으므로주의하십시오.
메인 스레드에서 네트워킹을하는 것은 "일반적인"오류가 아닙니다. 시스템에 의해 앱이 종료되고 NetworkOnMainThreadException
인터셉터가 실행될 기회가 주어지기 전에 발생합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다