java - 用于 http 请求和响应日志记录的 HttpLoggingInterceptor

标签 java android retrofit2 okhttp

我正在使用 retrofit2,我需要记录所有请求和响应。请求和响应完美无缺,我只需要记录这些请求/响应,我尝试了几乎所有在这里找到的解决方案,但没有找到解决方案。我不明白这里出了什么问题

这是我的代码

class Factory {

    private final static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
    private static NetworkApi.Factory serverApi;
    private static HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();

    private Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(RequestApi.BASE_URL)
            .client(httpClient.build())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    public static NetworkApi getApi() {
        if (BuildConfig.DEBUG){
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            httpClient.addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    Request.Builder builder = chain.request().newBuilder()
                            .addHeader("Content-Type", "application/json");
                    return chain.proceed(builder.build());
                }
            });

            httpClient.interceptors().add(interceptor);
        }
        if (serverApi == null){
            serverApi = new NetworkApi.Factory();
        }
        return serverApi.retrofit.create(NetworkApi.class);
    }
}

图书馆:

compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'

最佳答案

尝试使用 OkHttpClient 如下:

private OkHttpClient createDefaultOkHttpClient() {
  HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
  interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
  return new OkHttpClient().newBuilder()
          .addInterceptor(interceptor)
          .build();
}

然后只需将其设置为您的改造构建器:

Retrofit retrofitAsync = new Retrofit.Builder()
            .baseUrl(BASE_URL_APPS)
            .client(createDefaultOkHttpClient())
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(rxAdapter)
            .build();

关于java - 用于 http 请求和响应日志记录的 HttpLoggingInterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835315/

相关文章:

android - 查看带有切角和边框的背景

Java 插入带有空格的字符二维数组

java - 生成器 : Sonar Logging Exception

java - 无法从 xsd 生成正确的类

android - Admob 梯度依赖

android - TabActivity 中的 "sub" Activity 是否应该绑定(bind)服务?

java - 无型号类别的 retrofit 2

java - 不支持的操作 : Android, 改造,OkHttp。在 OkHttpClient 中添加拦截器

java - 您可以使用 Retrofit 2 和 Gson 将 ISO 8601 时间戳直接映射到 OffsetDateTime 或 ZonedDateTime 吗?

java - 有人获得了 .jar 来在谷歌应用程序引擎上运行吗?