当前位置: 首页 > 面试题库 >

Java使用翻新2进行记录

怀德馨
2023-03-14
问题内容

我正在尝试获取在请求中发送的确切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 1 ,我应该如何正确记录?


问题答案:

在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消息非常相似的logcat消息

setLogLevel(RestAdapter.LogLevel.FULL)

如果是java.lang.ClassNotFoundException:

较旧的翻新版本可能需要较旧的logging-interceptor版本。查看注释部分以了解详细信息。



 类似资料:
  • 我正在尝试获取请求中发送的确切的JSON。下面是我的代码: 但我只在日志中看到这一点:

  • 我尝试设置一个完整的路径,如: 但在这里,reverfit没有看到路径实际上是完整的URL,并且正在尝试下载 有任何提示,我可以如何使用这样的动态url改造?

  • 问题内容: 我需要使用Retrofit 2发布JSON对象。我的JSON对象是 {“ logTime”:“”,“ datas”:[{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” } ,{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” }]} 我尝试使用以下代码: A

  • 问题内容: 我正在做一个项目,目前正在用log4j实现一些日志记录,我很好奇我应该如何实现日志。我要介绍的两个实现如下: 第一选择 将超类的单个日志用于该类和所有子类: 第二种选择 为每个类,上级和下级使用单独的日志: 什么更有意义,为什么? 问题答案: 我也不会 相反,我会在两种情况下都使用正确的类。 如果您不进行大量日志记录(无论如何是个好主意),则可以改用一种方法。 如果有一个类经常调用它,

  • 我想用法语和英语翻译我的应用程序。我完全遵循了CakePHP3文档,但它不起作用。 在我的开发中,我使用了一个vagrant框来轻松启动并运行CakePHP3。这个盒子名叫“流浪厨师” 我修改了第100行,将法语作为默认语言。 我将此方法添加到默认页面控制器 我加了这两行 从终端,我输入这个命令。CakePHP在中创建了2个文件。那些文件是和。我翻译了默认值。像这样的文件: 文件现在如下所示: 尽