hac*_*tsu 89 java android retrofit
我们的团队决定采用Retrofit 2.0,我正在做一些初步的研究.我是这个图书馆的新手.
我想知道如何使用我们的Android应用程序中的Retrofits 2.0interceptor
添加自定义标头.有许多关于在Retrofit 1.X中使用添加标题的教程,但由于API在最新版本中发生了很大变化,我不确定如何在新版本中调整这些方法.此外,Retrofit尚未更新其新文档.interceptor
例如,在以下代码中,我应该如何实现Interceptor
该类以添加额外的标头?此外,未记载的Chain
对象究竟是什么?什么时候会intercept()
被召唤?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
Run Code Online (Sandbox Code Playgroud)
Epi*_*rce 105
看一下这个.
public class HeaderInterceptor
implements Interceptor {
@Override
public Response intercept(Chain chain)
throws IOException {
Request request = chain.request();
request = request.newBuilder()
.addHeader("appid", "hello")
.addHeader("deviceplatform", "android")
.removeHeader("User-Agent")
.addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
.build();
Response response = chain.proceed(request);
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
科特林
class HeaderInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response = chain.run {
proceed(
request()
.newBuilder()
.addHeader("appid", "hello")
.addHeader("deviceplatform", "android")
.removeHeader("User-Agent")
.addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
.build()
)
}
}
Run Code Online (Sandbox Code Playgroud)
Ven*_*dor 19
接受答案的另一种选择
public class HeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
request = request.newBuilder()
.addHeader("headerKey0", "HeaderVal0")
.addHeader("headerKey0", "HeaderVal0--NotReplaced/NorUpdated") //new header added
.build();
//alternative
Headers moreHeaders = request.headers().newBuilder()
.add("headerKey1", "HeaderVal1")
.add("headerKey2", "HeaderVal2")
.set("headerKey2", "HeaderVal2--UpdatedHere") // existing header UPDATED if available, else added.
.add("headerKey3", "HeaderKey3")
.add("headerLine4 : headerLine4Val") //line with `:`, spaces doesn't matter.
.removeAll("headerKey3") //Oops, remove this.
.build();
request = request.newBuilder().headers(moreHeaders).build();
/* ##### List of headers ##### */
// headerKey0: HeaderVal0
// headerKey0: HeaderVal0--NotReplaced/NorUpdated
// headerKey1: HeaderVal1
// headerKey2: HeaderVal2--UpdatedHere
// headerLine4: headerLine4Val
Response response = chain.proceed(request);
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59004 次 |
最近记录: |