Ich benutze OkHttp 3 (mit Retrofit2) und ich versuche, beide Cookies und Protokollierung zu arbeiten. Das Problem ist das Protokoll zeigt alles, aber nicht die Cookies. Ich habe den HTTP-Verkehr erfasst und der Cookie wird gesendet, sie werden nur nicht protokolliert. Ich habe versucht, den Logging Interceptor zu debuggen, und tatsächlich scheint die Anfrage keine Cookies zu haben (obwohl es andere benutzerdefinierte Header hat), wenn sie den intercept()
Aufruf erreicht. Irgendwelche Ideen was mache ich falsch?OKHttp3 Logging Interceptor protokolliert keine Cookies
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);
Beispielausgabe:
<-- 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