gpt4 book ai didi

java - 使用 Retrofit 2 进行日志记录

转载 作者:bug小助手 更新时间:2023-10-28 10:38:42 28 4
gpt4 key购买 nike

我正在尝试获取请求中发送的确切 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();

但我只在日志中看到:

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

鉴于删除了我们过去在 Retrofit 1 中使用的 setLog()setLogLevel(),我应该如何进行正确的日志记录?

最佳答案

在 Retrofit 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)

如果发生java.lang.ClassNotFoundException:

较旧的改造版本可能需要较旧的 logging-interceptor 版本。查看评论部分了解详细信息。

关于java - 使用 Retrofit 2 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com