[解決済み] Retrofit 2.0でHeaderを追加するためにインターセプターを使用するには?
2022-10-26 07:02:32
質問
私たちのチームは Retrofit 2.0 を採用することにしました。 を採用することを決定し、私はそれについていくつかの初期研究をしています。私はこのライブラリの初心者です。
私は、どのように
interceptor
を使ってカスタマイズされたヘッダを追加するにはどうしたらよいでしょうか。
レトロフィット 2.0
でカスタマイズされたヘッダを追加することができます。多くの
チュートリアル
を使用した
interceptor
を使ってヘッダを追加する方法を紹介していますが、最新版ではAPIが大きく変わったので、これらの方法を新しいバージョンでどのように適応させればいいのかわかりません。また、Retrofitはまだ新しいドキュメントを更新していません。
例えば、以下のコードでは、どのように
Interceptor
クラスをどのように実装すればよいのでしょうか?その上、正確には
という文書化されていない
Chain
オブジェクト
? いつ
intercept()
が呼ばれるのでしょうか?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
どのように解決するのですか?
こちらをご覧ください。
public class HeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader("appid", "hello")
.addHeader("deviceplatform", "android")
.removeHeader("User-Agent")
.addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
.build();
Response response = chain.proceed(request);
return response;
}
}
コトリン
class HeaderInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response = chain.run {
proceed(
request()
.newBuilder()
.addHeader("appid", "hello")
.addHeader("deviceplatform", "android")
.removeHeader("User-Agent")
.addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
.build()
)
}
}
関連
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
プロジェクトの依存関係を解決できない。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
無効なメソッド宣言
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
-
[解決済み] Retrofit 2.0とRxJavaを使ったレスポンスステータスコードの取得
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
強制型変換について
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
eclipse にリソースリーク:'in' が閉じない
-
java 365*1000*60*60*24 計算問題
-
Zipファイルの圧縮・解凍にantを使用する