Retrofit2用のシングルトンインスタンスを作成しようとしていますが、問題なく動作します。しかし、私がダイナミックヘッダーにしたいと思ったらすぐに私はそうすることができません。Retrofit2シングルトンインスタンス
public class ApiManager {
public final static String BASE_URL = "URL";
private static ApiManager instance =null;
private ApiModule apiModule;
public interface ApiModule {
@GET("exists")
Call<ServerStatus> checkExistsTeamName(@Path("teamName") String teamName);
}
private ApiManager(){
final TimeZone tz = TimeZone.getDefault();
OkHttpClient client = new OkHttpClient();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
try {
client.interceptors().add(new Interceptor() {
@Override
public com.squareup.okhttp.Response intercept(Interceptor.Chain chain) throws
IOException {
Request original = chain.request();
Request request = original.newBuilder()
.header("X-API-Version", "1")
.header("X-USER-TIMEZONE", tz.getID())
.method(original.method(), original.body())
.build();
return chain.proceed(request);
}
});
}catch (Exception e){
}
client.interceptors().add(interceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
apiModule = retrofit.create(ApiModule.class);
}
public static ApiManager getInstance() {
if(instance == null) {
instance = new ApiManager();
}
return instance;
}
public ApiModule getService() {
return apiModule;
}
public ApiModule getService(String token){
return apiModule;
}
}
その他のアクティビティでは、改造を呼び出すことができます。
ApiManager apiManager = ApiManager.getInstance(); apiManager.getService()。checkExistsTeamName( "parameters")
ここでうまくいきます。追加の動的ヘッダーを追加したい場合はどうすればいいですか?私はここにこだわっています
余分な動的ヘッダーを追加することはどういう意味ですか?これらを 'original.newBuilder()'というコードに追加しようとしていますか? – ishmaelMakitla
特定のAPI呼び出しに余分なヘッダーを追加することを意味しますか? – Emma
はい私は特定のAPiに余分なヘッダーを追加することを意味します@Emm – Sutirth