Retrofit2 Cookie管理-按声明决定是否带Cookie请求接口

Retrofit关于cookie缓存与使用的文章已经很多了,无论是使用CookieJar还是在OkHttpClient build的时候通过Interceptor设置header,但是在项目中有针对接口决定是否在请求中带cookie的需求,本文主要分享通过注解的方式决定具体接口在请求时是否传入Cookie
摘要由CSDN通过智能技术生成

整理自最近的项目经验,Retrofit关于cookie缓存与使用的文章已经很多了,无论是使用CookieJar还是在OkHttpClient build的时候通过Interceptor设置header,但是在项目中有针对接口决定是否在请求中带cookie的需求,比如获取应用首页数据,推荐商品之类的账户无关接口不需要带cookie,而账户相关接口需要带cookie。

最简单的实现方案是将接口分为需要cookie和不需要cookie两组分别声明,但是这样就限定了接口的声明方式,对于已有的项目改起来会比较麻烦,另一方面降低了声明的自由度,限制了其它方式的声明。是一种比较挫的做法。

对于这个问题,我首先想到的是能不能像Retrofit那样通过注解为接口声明属性,比如写个@UseCookie注解,被这个注解标识的接口在请求时将Cookie设置在Request的Header中。

要实现这个需求需要2点:

1. 解析自定义注解

2. 在解析自定义注解的期间能够编辑请求的Headers

这就需要阅读Retrofit的源码了,有关源码解析可以参考鸿洋大神的文章:

http://blog.csdn.net/lmj623565791/article/details/51304204

通过阅读Retrofit的源码可以知道Retrofit将声明的method转化成具体的Call主要是在ServiceMethod中进行的,如果不想动Retrofit的源码,而是用其对外提供的接口实现Annotation解析的功能,那就只有在ConverterFactory和CallA

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值