4
OkHttp 3 (retrofit2 포함)을 사용하고 있으며 쿠키와 로깅을 모두 얻으려고합니다. 문제는 로그에 쿠키가 아닌 모든 것이 표시된다는 것입니다. 내가 HTTP 트래픽을 캡처하고 쿠키가 보내지고있다, 그들은 단지 기록되지 않습니다. 로깅 인터셉터 디버깅을 시도했는데 실제로는 intercept()
호출에 도달하면 요청에 쿠키가없는 것 같습니다 (다른 사용자 정의 헤더가 있음에도 불구하고). 어떤 아이디어가 내가 뭘 잘못하고 있니?OkHttp3 로깅 인터셉터가 쿠키를 로그에 기록하지 않습니다.
final Gson gson = new GsonBuilder()
.setDateFormat(JSON_DATE_FORMAT)
.create();
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
OkHttpClient.Builder okClientBuilder = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain
.request()
.newBuilder()
.addHeader("custom-header", Utils.getRandomUUIDForHeader())
.build();
return chain.proceed(request);
}
})
.cookieJar(new JavaNetCookieJar(cookieManager))
.addInterceptor(logging);
if (mock) {
okClientBuilder.addInterceptor(new MockApiInterceptor(context));
}
return new Retrofit
.Builder()
.baseUrl(serverURL)
.client(okClientBuilder.build())
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(DefaultApi.class);
샘플 출력 : 쿠키가 요청에 추가되기 전에
<-- 200 OK http://localhost:53580/login (31ms)
Content-Length: 66
Set-Cookie: JSESSIONID=4b42fc452e6adc55334e65b945c24b8886b127a57786a6cd51de6b3117a58cc9; Path=/
OkHttp-Sent-Millis: 1467298601713
OkHttp-Received-Millis: 1467298601718
{
"status":"OK",
"sessionId":"p8tvdIHxQaON",
"entities":[]
}
<-- END HTTP (66-byte body)
--> GET http://localhost:53580/data http/1.1
custom-header: 663d0354-8a16-471a-bf6d-fb7fdb3d3404
--> END GET