Android Can';t获得改装2以使用匕首2发送全局设置的标题
我一直想采用匕首2与改装2结合使用。除了Android Can';t获得改装2以使用匕首2发送全局设置的标题,android,retrofit2,dagger-2,okhttp3,Android,Retrofit2,Dagger 2,Okhttp3,我一直想采用匕首2与改装2结合使用。除了GET请求之外,所有这些似乎都工作得很好;它们似乎没有附加任何标题 下面是我的NetworkModule,它为整个应用程序提供了所有与网络相关的依赖项(请注意此处散布的@ForApplication范围注释): 我已经运行了一个调试会话,并确认loginSessionPreference.isSet()的计算结果为true,但我的请求仍然没有显示任何标题: 11-16 16:55:22.748 21747-22569/xxx.xxx.xxx D/OkHtt
GET
请求之外,所有这些似乎都工作得很好;它们似乎没有附加任何标题
下面是我的NetworkModule
,它为整个应用程序提供了所有与网络相关的依赖项(请注意此处散布的@ForApplication
范围注释):
我已经运行了一个调试会话,并确认loginSessionPreference.isSet()
的计算结果为true
,但我的请求仍然没有显示任何标题:
11-16 16:55:22.748 21747-22569/xxx.xxx.xxx D/OkHttp: --> GET http://xxx.xxx.xxx/api/1.0/public/get-all-data/site http/1.1
11-16 16:55:22.748 21747-22569/xxx.xxx.xxx D/OkHttp: --> END GET
我错过了什么吗?使用.addInterceptor而不是.addNetworkInterceptor()首先,像Alex Shutov建议的那样使用addInterceptor() 其次,确保在调试模式下调用addHeader()方法。 如果使用相同的改装实例(相同的注入),则无法使用该实例,因为loginSessionPreference.isSet()始终返回false 您的方法provideOkHttp()被调用,而OkHttpClient是提供改造实例所必需的。方法provideOkHttp()需要首选项,并在创建对象OkHttpClient时将其注入。您可以将其视为最终变量(我认为编译器甚至会将其设置为最终变量) 请删除loginSessionPreference逻辑并硬编码一些标题-它将告诉我们这是否是问题所在
在我看来,您需要稍微改变一下这种体系结构。从这里看一看,您会更好地理解@Raghunandan,这不是
addNetworkInterceptor
已经在做的事情吗?嗯,不完全是方法,而是传入的拦截器。我现在看到了。很抱歉
@ForApplication
@Component(
modules = {
ApplicationModule.class,
RuntimeModule.class,
DateFormatModule.class,
PreferenceModule.class,
NetworkModule.class
}
)
public interface ApplicationComponent {
// …
}
11-16 16:55:22.748 21747-22569/xxx.xxx.xxx D/OkHttp: --> GET http://xxx.xxx.xxx/api/1.0/public/get-all-data/site http/1.1
11-16 16:55:22.748 21747-22569/xxx.xxx.xxx D/OkHttp: --> END GET