liangjingkanji / Net

Android 基于协程/OkHttp网络请求工具
http://liangjingkanji.github.io/Net/
MIT License
1.9k stars 214 forks source link

如何覆盖全局请求头 #128

Closed zkzk7749 closed 2 years ago

zkzk7749 commented 2 years ago

在全局配置中,添加了请求拦截器,并加了请求头,比如像demo这样子

 class MyRequestInterceptor : RequestInterceptor {
    override fun interceptor(request: BaseRequest) {
        request.addHeader("client", "Android")
        request.setHeader("token", "6cad0ff06f5a214b9cfdf2a4a7c43339")
    }
}

。 现在我有个问题。 我想在个别接口上,覆盖或者添加拦截器中的请求头怎么办? 经我测试,在个别接口上覆盖请求头,或者添加请求头,都会被拦截器拦截强制修改,我自定义的无效

liangjingkanji commented 2 years ago

拦截器是okHttp的常见操作, 拦截器的执行顺序在请求动作(Post/Get..)之后而不是之前

  1. 请求拦截器中判断有该请求头就不添加了
  2. 传递一个tagMyRequestInterceptor用于判断
  3. 实现Interceptor也行
liangjingkanji commented 2 years ago
/** 请求拦截器, 一般用于添加全局参数 */
class MyRequestInterceptor : RequestInterceptor {

    /** 本方法每次请求发起都会调用, 这里添加的参数可以是动态参数 */
    override fun interceptor(request: BaseRequest) {
        // 仅请求动作没有添加时才会添加默认请求头
        if (request.okHttpRequest.headers()["client"] == null) {
            request.addHeader("client", "Android")
        }
        request.setHeader("token", "6cad0ff06f5a214b9cfdf2a4a7c43339")
    }
}
zkzk7749 commented 2 years ago

感谢东哥,感谢东哥