Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';t获得改装2以使用匕首2发送全局设置的标题_Android_Retrofit2_Dagger 2_Okhttp3 - Fatal编程技术网

Android Can';t获得改装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

我一直想采用匕首2与改装2结合使用。除了
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