4 つの異なる API があり、それぞれに独自のヘッダーがあります。各呼び出しに同じヘッダーを与える代わりに、ヘッダーを埋めるためにインターセプターメカニズムを使用しようとしましたが、OkHttpインターセプターはすべてのリクエストに対して実行されるため、APIごとにインターセプターを作成できません。
Retrofit2 には、すべてのリクエストに対して同じヘッダーを作成することを回避できる他のメカニズムは見つかりませんでした。
一連の呼び出しに同じヘッダーを与える良い方法は何でしょうか?
私は同じ種類の問題を抱えていました。API に基づいて、受信した応答にキャッシュ ヘッダーを追加する必要がありました。
この問題を解決するために、応答の URL を評価し、それに応じてキャッシュ ヘッダーを追加/削除できるインターセプターを使用しました。
あなたの問題では、インターセプターは次のようになります。
public class HeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
HttpUrl url = request.url();
// Add headers depending upon the url
// Proceed the request
}
}
このインターセプターを OkHttp クライアントに追加すると、一連の呼び出しに特定のヘッダーが追加されます。
それが役に立てば幸い。