我正在try 获取请求中发送的确切JSON.这是我的代码:

OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor(){
   @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
      Request request = chain.request();
      Log.e(String.format("\nrequest:\n%s\nheaders:\n%s",
                          request.body().toString(), request.headers()));
      com.squareup.okhttp.Response response = chain.proceed(request);
      return response;
   }
});
Retrofit retrofit = new Retrofit.Builder()
   .baseUrl(API_URL)
   .addConverterFactory(GsonConverterFactory.create())
   .client(client).build();

但我只在日志(log)中看到:

request:
com.squareup.okhttp.RequestBody$1@3ff4074d
headers:
Content-Type: application/vnd.ll.event.list+json

考虑到我们在 retrofit 1中使用的setLog()setLogLevel()被移除,我应该如何进行正确的日志(log)记录?

推荐答案

在改装2中,你应该使用HttpLoggingInterceptor.

将依赖项添加到build.gradle.截至2019年10月的最新版本为:

implementation 'com.squareup.okhttp3:logging-interceptor:4.2.1'

创建一个Retrofit对象,如下所示:

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

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

return retrofit.create(ApiClient.class);

如果出现弃用警告,只需将setLevel更改为:

interceptor.level(HttpLoggingInterceptor.Level.BODY);

上面的解决方案为您提供的logcat消息与由设置的旧消息非常相似

setLogLevel(RestAdapter.LogLevel.FULL)

In case of 100:

较旧的Retrofit版本可能需要较旧的logging-interceptor版本.有关详细信息,请查看 comments 部分.

Java相关问答推荐

编译期间错误(Java 0000)Android .Net MAUI

Java:根据4象限中添加的行数均匀分布行的公式

try 使用Java 9或更高版本对特殊对象图进行解析时出现NullPointerException

Javascript在边界中心调整ImageView大小

inteliJ中是否有一个功能可以自动在块注释中的/*后面添加一个空格?''

使用Java Streams API比较两个不同的Java集合对象和一个公共属性

如何调整工作时间日历中的时间

Java中的死锁及其重入锁和锁

将带有js文件的 bootstrap 程序导入maven项目时出错

@Rollback @ Transmission在验收测试中不工作

扩展视图高度,并将其拖动到较低的视图上,而不是将其向下推?

Spring动态反序列化JSON可以是列表,也可以只是一个对象

使用for循环时出现堆栈溢出错误,但如果使用if块执行相同的操作,则不会产生错误

为了安全起见,有必要复制一份 list 吗?

为什么mvn编译生命周期阶段不只是编译已更改的java文件?

如何使用WebEnvironment.RANDOM_PORT获得第二个随机端口?

JavaFX:为什么我的ComboBox添加了一个不必要的单元格的一部分?

读取ConcurrentHashMap中的可变对象

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

在外部类和内部类之间,当调用外部类内部或外部的主方法时,它们的静态初始化程序的运行顺序不同