我有用于Okhttp客户端的Singleton dagger模块,我正在尝试使用Interceptor添加标头
@ProvIDes@SingletonOkhttpClIEnt 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();}
但看着日志我看不到预期的标题.此外,我收到错误,因为没有必要的标题,特定的调用不起作用.
我还尝试使用不同的类添加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); }}
但这种方式对我来说也不起作用.
如何在每次只有一个实现的应用程序调用中添加此标头?
解决方法:
添加拦截器的顺序很重要.您的日志记录拦截器首先运行,然后才会运行标头添加拦截器.
为了获得最佳的日志记录体验,请将日志记录拦截器设置为您添
总结以上是内存溢出为你收集整理的使用拦截器添加标头的Android Retrofit 2.0不起作用全部内容,希望文章能够帮你解决使用拦截器添加标头的Android Retrofit 2.0不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)