OkHttpClient全局配置Header失效:调试时API请求未携带指定Header
解决OkHttpClient全局添加请求Header的问题
你用Authenticator来加全局Header是找错了工具——Authenticator只在请求返回401未授权的时候才会触发,用来生成带认证信息的重试请求,正常的API调用根本不会走到这个逻辑,所以Header自然不会被带上。
要给所有请求统一加Header,正确的做法是用Interceptor(拦截器),它能在每个请求发送前统一处理,代码改成这样就行:
val client = OkHttpClient.Builder() .addInterceptor { chain -> // 获取原请求 val originalRequest = chain.request() // 构建新请求并添加Header val newRequest = originalRequest.newBuilder() .addHeader("authorization", "123") .build() // 继续执行修改后的请求 chain.proceed(newRequest) } .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .build() AndroidNetworking.initialize(applicationContext, client)
这个拦截器会拦截每一个即将发送的请求,复制原请求并添加上你需要的Header,再继续发送,这样所有API调用都会自动携带这个Header。
如果之后需要处理动态更新Header(比如token过期刷新),再结合Authenticator来处理重试逻辑就行,全局固定Header用Interceptor完全足够。
内容的提问来源于stack exchange,提问作者bala
相关产品推荐
相关产品推荐

