当前位置: 首页 > 知识库问答 >
问题:

改型2使用HttpLoggingInterceptor.level.body在日志中打印空响应正文

汝岳
2023-03-14

我使用referfit 2.0.0。这是构建HTTP客户端的代码

protected OkHttpClient getHttpClient(){
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.addInterceptor(
                chain -> {
                    Request original = chain.request();

                    Request.Builder requestBuilder = original.newBuilder();

                    requestBuilder.header("Accept-Language", App.getInstance().getPrefs().getSelectedLanguage().toLowerCase());
                    requestBuilder.header("Accept-Encoding", "gzip");

                    if(API.this instanceof PrivateAPI){
                        LoginResponse loginResponse = AuthManager.getInstanse().getLoginResponse();
                        requestBuilder.header("Authorization", String.format("%s %s",
                                loginResponse.getTokenType(),
                                loginResponse.getAccessToken()));
                    }

                    requestBuilder.method(original.method(), original.body());

                    Request request = requestBuilder.build();
                    return chain.proceed(request);
                });

        if(BuildConfig.DEBUG){
            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            builder.addInterceptor(loggingInterceptor);
        }

        return builder.build();
    }

下面是我如何使用它初始化我的改型API接口:

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create(getGson()))
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .client(getHttpClient())
            .build();

    apiService = retrofit.create(PrivateAPIInterface.class);
  D/OkHttp: --> GET http://MY_DOMAIN/utility/gaz?branchid=&phone=21919&customerid= HTTP/1.1
  D/OkHttp: Accept-Language: hy
  D/OkHttp: Accept-Encoding: gzip
  D/OkHttp: Authorization: 0yXK65Go_hRPT32WIP4DAKjmzIaM0riSLlybHhusvwmYJSxTdTVBrkL5CaqopXgrOuNFL5xvR5uVwCbprWrxvfYTMJ1I_AUmd5TKdNL4ptkUrJuOy1kGiule_yveCFv0GbTiAXhYjdfynJICJEVWc54ibnIv_Q14dLpPuVle5IaRuHmza2Pavkrhzi42sfMsK0Qpxaueu8eRPysk6MP9WkTnSKYIAThuq3sHq8RGAnkaLBx
  D/OkHttp: --> END GET
  D/OkHttp: <-- 200 OK http://MY_DOMAIN/utility/gaz?branchid=&phone=21919&customerid= (394ms)
  D/OkHttp: Content-Length: 8527
  D/OkHttp: Content-Type: application/json; charset=utf-8
  D/OkHttp: Server: Microsoft-IIS/7.5
  D/OkHttp: X-Powered-By: ASP.NET
  D/OkHttp: Date: Wed, 16 Mar 2016 12:30:37 GMT
  D/OkHttp: OkHttp-Sent-Millis: 1458131438086
  D/OkHttp: OkHttp-Received-Millis: 1458131438438
  D/OkHttp: }
  D/OkHttp: <-- END HTTP (8527-byte body)

共有1个答案

张淳
2023-03-14

对于retrofit-2,您应该使用OKHTTP3来获取完整的日志。将此添加到您的dependecies:编译'com.squareup.okhttp3:logging-interceptor:3.0.1'

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://example.com")
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

return retrofit.create(ApiClient.class);
 类似资料:
  • 但是我总是在方法中获得响应。因此,我尝试使用查看响应的错误主体。错误正文包含与原始响应完全相同的内容。 我用控制了response,看看我是否修改了我的响应类wright,它似乎可以。 为什么改型无法转换我的响应? 更新

  • SLF4J 提供了 MDC (Mapped Diagnostic Contexts)功能,可以支持用户定义和修改日志的输出格式以及内容。本文将介绍 SOFATracer 集成的 SLF4J MDC功能,方便用户在只简单修改日志配置文件的前提下输出当前 SOFATracer 上下文 TraceId 以及 SpanId 。 使用前提 为了在应用中的日志正确打印 TraceId 和 SpanId 参数,

  • 我试图构建一个基于Java、RestAssured和Cucumber的Rest API自动化。我想通过柱子击中终点。问题是,当我将响应转换为字符串时,当我打印响应时,它打印的是XML文件内容,而不是响应。我还看到状态代码为200。我不知道这里出了什么问题。下面是我的代码库中的示例代码段。 我正在尝试使用WebService(SOAP WSDL)。 我不知道为什么我会看到这种模糊。有时打印响应,有时

  • 当我运行这段代码时,没有任何东西被打印到控制台。我应该如何使用logp?

  • 当我在Wildfly10上部署war时,Log4j日志不会打印。1.0.最终的不过,它与Tomcat配合得很好。 我在网上发现Wildfly使用log4j,所以我在jboss部署结构中排除了log4j。下面的xml避免了依赖冲突,但没有运气。 下面是我log4.properties档案 下面是我的pom。xml依赖关系 下面是我部署战争时得到的错误日志。 我正在尝试运行独立的完整ha。xml