如何使用Retrofit-Android记录请求和响应正文?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我尝试在Builder中设置日志级别,但这对我也没有帮助:

RestAdapter adapter = (new RestAdapter.Builder()).
                setEndpoint(baseUrl).
                setRequestInterceptor(interceptor).
                setProfiler(profiler).
                setClient(client).
                setExecutors(MyApplication.getWebServiceThreadPool()).
                setLogLevel(LogLevel.FULL).
                setLog(new RestAdapter.Log() {
                    @Override
                    public void log(String msg) {
                        Log.i(TAG, msg);
                    }
                }).
                build();

提问于
用户回答回答于

我用setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))它帮助了我。 你也可以尝试将调试目的retrofit.client.Response用作响应模型。

用户回答回答于

你需要将以下行添加到你的build.gradle文件中的gradle导入中以获取日志拦截器依赖项:

compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'

在开发你的应用程序并进行调试时,最好集成一个日志功能以显示请求和响应信息。由于日志在Retrofit 2中不再默认集成,我们需要为OkHttp添加一个日志拦截器。幸运的是,OkHttp已经发布了这个拦截器,你只需要为你的OkHttpClient激活它:

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();  
// set your desired log level
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();   
// add your other interceptors …
// add logging as last interceptor
httpClient.addInterceptor(logging);  // <-- this is the important line!
Retrofit retrofit = new Retrofit.Builder()  
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();

扫码关注云+社区