リクエストで送信されている正確な 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()
ベストアンサー1
Retrofit 2では、HTTPログインターセプター。
への依存関係を追加しますbuild.gradle
。2023 年 5 月現在の最新バージョンは次のとおりです。
implementation 'com.squareup.okhttp3:logging-interceptor:4.11.0'
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
:
古い Retrofit バージョンには古いlogging-interceptor
バージョンが必要になる場合があります。詳細についてはコメント セクションを参照してください。