Android Retrofit添加header参数

2024-06-04 3915阅读

前言

有些接口需要单独设置header参数 作为标记

如何灵活 或者统一设置请求header呢

注解@Headers

顾名思义 @Headers是指多个header 放在对象里 统一管理

//获取xxx
@Headers({"Content-Type: application/json",
 		  "User-Agent: test"})
@POST("xxxx")
Observable getObj(@Body Map map);

拦截器 Interceptor

如果index.php/tags-602.html" class="superseo">使用代码的方式,则需要添加头部拦截器

需要注意的是这里是统一拦截 一般指固定的头部参数

根据业务来判断

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();  
httpClient.addInterceptor(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();
 
        Request request = original.newBuilder()
            .header("Content-Type", "application/json")
            .header("User-Agent", "test")
            .method(original.method(), original.body())
            .build();
 
        return chain.proceed(request);
    }
}
 
OkHttpClient client = httpClient.build();  
Retrofit retrofit = new Retrofit.Builder()  
    .baseUrl(API_BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build();

注解 @Header

@Header指单个header 添加单个头部 动态 可灵活配置

适用于个别接口 有要求的上传参数

下面这个认证接口 后台要求传一个加密的key 而其他接口不需要

所以用@Header 最为方便

  //认证接口
@Headers({"Content-Type: application/json"})
@POST("isp/app/worker/auth")
Observable auth(@Header("key") String encodeStr, 
							@Body Map map);

Android Retrofit添加header参数 第1张


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]