在 retrofit2 中使用 Singleton 模式时,如何使用拦截器生成不同的 headers?
When using Singleton pattern for retrofit2, how can I gen different headers with interceptor?
我知道,我可以使用@Header 来表示不同的headers。
但是当我使用单例模式进行改造时,有什么方法可以使拦截器的请求不同headers?
当你使用拦截器拦截请求时,在拦截方法中你可以写如下添加headers:
Request originalRequest = chain.request();
HttpUrl originalHttpUrl = originalRequest.url();
HttpUrl newHttpUrl = originalHttpUrl.newBuilder()
.build();
Request newRequest = originalRequest.newBuilder()
.addHeader(AppConstants.AUTHORIZATION, AppConstants.TOKEN)
.addHeader(AppConstants.CONTENT_TYPE, AppConstants.APPLICATION_JSON)
.addHeader(AppConstants.REQUESTED_WITH, AppConstants.XML_HTTP_REQUEST)
.url(newHttpUrl)
.build();
return chain.proceed(newRequest);
}
如果你想在每个请求中添加 headers 那么你可以这样做:
@Headers({
"Accept: application/json",
"User-Agent: Your-App-Name",
"Cache-Control: max-age=640000"
})
@GET(ApiConstants.GET_WORKER_DATA)
Call<ArrayList<Worker>> getWorkerData();
你可以为每个请求添加不同的header,像这样在里面添加header标签
@GET("YourEndPoint")
Call<YourClassName> YourFunctionName(@Header("Authorization") String accessToken) ;
我知道,我可以使用@Header 来表示不同的headers。 但是当我使用单例模式进行改造时,有什么方法可以使拦截器的请求不同headers?
当你使用拦截器拦截请求时,在拦截方法中你可以写如下添加headers:
Request originalRequest = chain.request();
HttpUrl originalHttpUrl = originalRequest.url();
HttpUrl newHttpUrl = originalHttpUrl.newBuilder()
.build();
Request newRequest = originalRequest.newBuilder()
.addHeader(AppConstants.AUTHORIZATION, AppConstants.TOKEN)
.addHeader(AppConstants.CONTENT_TYPE, AppConstants.APPLICATION_JSON)
.addHeader(AppConstants.REQUESTED_WITH, AppConstants.XML_HTTP_REQUEST)
.url(newHttpUrl)
.build();
return chain.proceed(newRequest);
}
如果你想在每个请求中添加 headers 那么你可以这样做:
@Headers({
"Accept: application/json",
"User-Agent: Your-App-Name",
"Cache-Control: max-age=640000"
})
@GET(ApiConstants.GET_WORKER_DATA)
Call<ArrayList<Worker>> getWorkerData();
你可以为每个请求添加不同的header,像这样在里面添加header标签
@GET("YourEndPoint")
Call<YourClassName> YourFunctionName(@Header("Authorization") String accessToken) ;