Я пытаюсь отправить динамические заголовки, используя Okhttp
interceptor
, но проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю метод setretrofitclient()
одновременно, тогда заголовок, отправленный для обоих запросов, одинаков.Это происходит потому, что при перехвате okhttp в фоновом потоке выполнялся запрос, но в то же время значение заголовка UI thread
изменяется, из-за чего при отправке запроса okhttp отправляется новый обновленный заголовок.
String header;
public String getHeader() {
return header;
}
static RetrofitInterface retrofitInterface;;
public RetrofitInterface setretrofitclient(String header) {
this.header = header;
if (retrofit != null) {
return retrofit;
} else {
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder().addHeader("x-param", getHeader()).build();
return chain.proceed(request);
}
});
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create()).baseUrl(url).client(httpClient.build()).build();
retrofitInterface = retrofit.create(RetrofitInterface.class);
return retrofitInterface;
}
}
Может кто-нибудь предложить мне шаблон проектирования, как я могу сделать эту работу для параллельных запросов.
Спасибо.