Модернизировать Okhttp отправлять динамические заголовки запросов с помощью перехватчика? - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь отправить динамические заголовки, используя 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;
    }
}

Может кто-нибудь предложить мне шаблон проектирования, как я могу сделать эту работу для параллельных запросов.

Спасибо.

...