retrofitでHeaderを変える
OkHttp側のインターセプターでヘッダーの値を変えることもできるけど、retrofitでもヘッダーの設定が出来る。APIごとにヘッダを変えるだけでなく、ヘッダーの内容に変数を含めて動的にヘッダーの値を変えることも出来る。
以下、バージョンはretrofit2.0。
APIごとにヘッダーを設定
public interface UserService { @Headers("Cache-Control: max-age=640000") @GET("/tasks") Call<List<Task>> getTasks(); }
こういう感じで@HeaderアノテーションをつければOK。retrofitの場合はメソッドというかAPIごとの設定になるのでOkHttpでの方法よりも小回りがきく。
動的にヘッダーを変える
ヘッダーの内容に変数を渡したい時もretrofitがなんとかしてくれる。
public interface UserService { @GET("/tasks") Call<List<Task>> getTasks(@Header("Content-Range") String contentRange); }
これでgetTasksメソッドを呼ぶときにcontentRangeという文字列引数を渡してあげれば、その文字列がそのままヘッダーの値として入るようになる。 常時つけるような静的なヘッダーはOkHttpのインターセプターで、OkHttp側でやるのは大仰過ぎるとか動的に値をコントロールしたいのであればretrofit側で行うというほうがよさそうだ。
参考: