gpt4 book ai didi

Android Retrofit 2.0 添加带有拦截器的 header 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:01:42 25 4
gpt4 key购买 nike

我有 OkHttp 客户端的 Singleton Dagger 模块,我正在尝试使用 Interceptor 添加 header

@Provides
@Singleton
OkHttpClient provideOkhttpClient(Cache cache, final LocalData localData) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.HEADERS);

OkHttpClient.Builder client = new OkHttpClient.Builder();
client.readTimeout(60, TimeUnit.SECONDS);
client.addInterceptor(logging);
client.addNetworkInterceptor(new Interceptor() {
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("Hp-Application", "Android");
Request request = requestBuilder.build();
Response originalResponse = chain.proceed(request);
try {
if (originalResponse.code() == 200) {
localData.setLastUpdateTime(System.currentTimeMillis());
}
} catch (Exception e) {
e.printStackTrace();
}
return originalResponse;
}
});
client.connectTimeout(60, TimeUnit.SECONDS);
client.cache(cache);
return client.build();
}

但是查看日志我看不到预期的 header 。我还收到错误消息,因为没有必需的 header ,特定调用将无法工作。

我还尝试使用不同的类通过 addInterceptor()/addNetworkInterceptor() 添加它

 public class HeaderInterceptor
implements Interceptor {
@Override
public Response intercept(Chain chain)
throws IOException {
Request request = chain.request();
request = request.newBuilder()
.addHeader("Hp-Application", "Android")
.build();
return chain.proceed(request);
}
}

但是这种方式对我也不起作用。

如何将此 header 添加到只有一个实现的应用程序的每个调用中?

最佳答案

添加拦截器的顺序很重要。您的日志记录拦截器首先运行,然后才运行 header 添加拦截器。

为了获得最佳的日志记录体验,请将日志记录拦截器添加到最后一个。

关于Android Retrofit 2.0 添加带有拦截器的 header 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com