【问题标题】:OkHttp3 logging interceptor does not log cookiesOkHttp3 日志拦截器不记录 cookie
【发布时间】:2016-07-01 08:38:13
【问题描述】:

我正在使用 OkHttp 3(带有改造 2),我正在尝试让 cookie 和日志记录都能正常工作。问题是日志显示所有内容,但不显示 cookie。我已经捕获了 HTTP 流量并且正在发送 cookie,它们只是没有被记录。我尝试调试日志拦截器,实际上,当请求到达intercept() 调用时,它似乎没有cookie(尽管它确实有其他自定义标头)。任何想法我做错了什么?

    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

【问题讨论】:

    标签: okhttp okhttp3


    【解决方案1】:

    日志拦截器在 cookie 添加到请求之前运行。通过使用网络拦截器而不是应用程序拦截器来解决此问题。更多指导在这里:

    https://github.com/square/okhttp/wiki/Interceptors

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多