改造Okhttp使用拦截器发送动态请求标头吗?

时间:2018-10-06 18:01:16

标签: android retrofit interceptor okhttp

我正在尝试使用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;
    }
}

任何人都可以向我建议设计模式,如何针对并行请求进行这项工作。

谢谢。

0 个答案:

没有答案