我正在尝试使用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;
}
}
任何人都可以向我建议设计模式,如何针对并行请求进行这项工作。
谢谢。