[解決済み】Retrofit 2でのログ取得について
2022-04-16 14:14:56
質問
リクエストで送信される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
の削除を考えると、どうやって適切なロギングをすればいいのでしょうか?
setLog()
と
setLogLevel()
レトロフィット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メッセージが表示されます。
setLogLevel(RestAdapter.LogLevel.FULL)
の場合
java.lang.ClassNotFoundException
:
旧Retrofit版では、旧バージョンが必要な場合があります。
logging-interceptor
のバージョンです。 詳しくはコメント欄をご覧ください。
関連
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] IntegerからBigIntegerへの変換
-
[解決済み] Retrofit-Androidでリクエストとレスポンスボディのログを取るには?