Retrofit 设置头信息

Retrofit 设置头信息,第1张

用retrofit设置头信息:

通过@Header 或者@Headers 去添加

区别是 @Header 需要写到参数位置,用于指定可变的头信息

而@Headers 则作用于方法,用于指定固定的头信息

如:

再比如

当然了,如果大家习惯使用通过OkHttpClient设置的话,也是可以的

原文: https://blog.csdn.net/sk719887916/article/details/52189602

添加统一通用header, 不会覆盖前面的header

okHttpClient.interceptors().add(new Interceptor() {

    @Override

    public Response intercept(Interceptor.Chain chain) throws IOException {

        Request original = chain.request()

        // Request customization: add request headers

        Request.Builder requestBuilder = original.newBuilder()

                    .addHeader("header-key", "value1")

                    .addHeader("header-key", "value2")

        Request request = requestBuilder.build()

        return chain.proceed(request)

    }

})

添加统一通用header, 会覆盖前面的header

okHttpClient.interceptors().add(new Interceptor() {

    @Override

    public Response intercept(Interceptor.Chain chain) throws IOException {

        Request original = chain.request()

        // Request customization: add request headers

        Request.Builder requestBuilder = original.newBuilder()

                .header("headerkey", "header-value")// <-- this is the important line

        Request request = requestBuilder.build()

        return chain.proceed(request)

    }

})

统一添加参数

OkHttpClient.Builder httpClient =

    new OkHttpClient.Builder()

httpClient.addInterceptor(new Interceptor() { 

    @Override

    public Response intercept(Chain chain) throws IOException {

        Request original = chain.request()

        HttpUrl originalHttpUrl = original.url()

        HttpUrl url = originalHttpUrl.newBuilder()

                .addQueryParameter("apikey", "your-actual-api-key")

                .build()

        // Request customization: add request headers

        Request.Builder requestBuilder = original.newBuilder()

                .url(url)

        Request request = requestBuilder.build()

        return chain.proceed(request)

    }

})

1、Retrofit创建

2、Retrofit实现Cookie自动化管理

3、Retrofit,Gson解析,请求返回的类型不统一,假如double返回的是null

4、请求参数日志打印

5、统一请求参数添加到请求头中

6、统一请求参数添加到请求body中

7、缓存的拦截

8、BaseUrl动态切换

9、拦截指定接口,动态更改返回值便于测试

点击传送查看

点击传送查看

1.第一种办法,依赖第三方库

配置信息如下

2.第二种办法,拦截器拦截(个人推荐第二种,可控性高)

给大家推荐一个打印日志库,很漂亮的日志结构

然后在httpClientBuilder中添加拦截

然后在httpClientBuilder中添加拦截

然后在httpClientBuilder中添加拦截

然后在httpClientBuilder中添加拦截

用了一个博客中民间大神的拦截动态替换baseUrl方法有点问题,我暂时用了一种简单粗暴方法

上边的路径是我随便写的,post中写全路径,这个优先级最高,同时设置了baseUrl不受影响

给大家一个专门写动态替换baseUrl连接 传送门

有时候我们需要返回指定值测试,可能需要空或者null等,迫于无法修改服务器返回数据,也没必要让后台修改数据,所以引发一个问题,如果拦截返回内容并修改指定字段值

然后在httpClientBuilder中添加拦截


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11557342.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存