android - retrofit怎么针对不同的url统一添加header?
PHP中文网
PHP中文网 2017-04-17 17:35:36
[Android讨论组]

目前我是使用retrofit来作为我的网络请求框架,对某些请求还需要加headers。我在官网查到有@Header标签来指定header参数,但是这样写的话太繁琐,如果service中方法比较多的话,不是要写死了。又在网上又查了下,可以使用自定义的OkHttpClient来实现,然后使用:

Retrofit retrofit = new Retrofit.Builder()  
            .baseUrl(SERVER_URL)  
            .client(genericClient())  
            .build();

但是这种做法的话,就会把所有使用这个retrofit的url都加上了header,但是部分url是不需要的,比如我只是想在需要授权的url调用上都加上header参数(header里面加token)。找了半天网上没有相关的文章,所以请SF的朋友们回答下,谢谢!

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
ringa_lee

我是这么写的

OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.addInterceptor(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException, java.io.IOException {
        Request request = chain.request().newBuilder()
                .addHeader("Source", "android")
                .addHeader("Accept", "application/json,text/javascript,*/*")
                .build();
        return chain.proceed(request);
    }
});
OkHttpClient client = builder.build();

retrofit = new Retrofit.Builder()
        .baseUrl(BASE_TRC_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create(getGson()))
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .build();

但是这样不能统一加token

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号