CookiePolicy 原理解析
CookiePolicy策略可以精確控制程序接收那些cookie,拒絕接受那些cookie。
CookiePolicy 策略機制解析
public interface CookiePolicy {public static final CookiePolicy ACCEPT_ALL = new CookiePolicy(){public boolean shouldAccept(URI uri, HttpCookie cookie) {return true;}};public static final CookiePolicy ACCEPT_NONE = new CookiePolicy(){public boolean shouldAccept(URI uri, HttpCookie cookie) {return false;}};public static final CookiePolicy ACCEPT_ORIGINAL_SERVER = new CookiePolicy(){public boolean shouldAccept(URI uri, HttpCookie cookie) {if (uri == null || cookie == null)return false;return HttpCookie.domainMatches(cookie.getDomain(), uri.getHost());}};public boolean shouldAccept(URI uri, HttpCookie cookie); }從源碼中可以看出CookiePolicy 默認提供了3中策略實現機制
1. CookiePolicy.ACCEPT_ALL;
從源碼中可以發現直接return true。就是接受所有的cookie。
2. CookiePolicy.ACCEPT_NONE;
從源碼中可以發現直接return false。就是拒絕所有的cookie。
3. CookiePolicy.ACCEPT_ORIGINAL_SERVER;
內部調用了HttpCookie.domainMatches的方法。該方法是判斷cookie的域和URL的域是否一樣,如果一樣就return true。只接收域名相同的Cookie
如果該cookie策略不滿足需求,還可以自己定義策略,只要實現CookiePolicy接口中的 public boolean shouldAccept(URI uri, HttpCookie cookie); 方法即可。
自定義CookiePolicy,只接受URI域名中包含“infcn”或者,cookie域中包含“infcn”的cookie
public class MyCookiePolicy implements CookiePolicy{@Overridepublic boolean shouldAccept(URI uri, HttpCookie cookie) {if(uri.getAuthority().toLowerCase().indexOf("infcn")!=-1 || cookie.getDomain().toLowerCase().indexOf("infcn")!=-1){return true;}return false;} }本人簡書blog地址:http://www.jianshu.com/u/1f0067e24ff8????
點擊這里快速進入簡書
GIT地址:http://git.oschina.net/brucekankan/
點擊這里快速進入GIT
總結
以上是生活随笔為你收集整理的CookiePolicy 原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: InetAddress 解析
- 下一篇: HttpURLConnection 中C