// BEGIN IA/HERITRIX CHANGES public /*synchronized*/ void addCookie(Cookie cookie) { LOG.trace("enter HttpState.addCookie(Cookie)"); // PRIOR IMPL & COMPARISON HARNESS LEFT COMMENTED OUT FOR TEMPORARY REFERENCE // Cookie removed1 = null; // Cookie removed2 = null; if (cookie != null) { // first remove any old cookie that is equivalent // for (Iterator it = cookiesArrayList.iterator(); it.hasNext();) { // Cookie tmp = (Cookie) it.next(); // if (cookie.equals(tmp)) { // it.remove(); // removed1 = tmp; // break; // } // } if (!cookie.isExpired()) { // cookiesArrayList.add(cookie); cookiesMap.put(cookie.getSortKey(), cookie); } else { cookiesMap.remove(cookie.getSortKey()); } } // if(removed1!=null && !removed1.equals(removed2)) { // System.out.println("addCookie discrepancy"); // } // END IA/HERITRIX CHANGES }
public void processRequestCookie( HttpURLConnection connection, HashMap<String, String> cookieHeaders) { connection.setInstanceFollowRedirects(false); // ----------------------------------------------------------------------------------------------------- // 1、获取所有的Cookie集合 // ----------------------------------------------------------------------------------------------------- CookieStore cookieStore = CookieStoreHandler.getInstance(); List<Cookie> cookies = cookieStore.getCookies(); if (null == cookies || cookies.size() <= 0) { return; } // ----------------------------------------------------------------------------------------------------- // 2、获取CookieOrigin // ----------------------------------------------------------------------------------------------------- CookieOrigin cookieOrigin = getCookieOrigin(connection); // ----------------------------------------------------------------------------------------------------- // 3、过滤符合条件数据,获取符合的Cookie集合 // ----------------------------------------------------------------------------------------------------- CookieSpec cookieSpec = obtainCookieSpec(); final List<Cookie> matchedCookies = new ArrayList<Cookie>(); final Date now = new Date(); boolean expired = false; for (final Cookie cookie : cookies) { if (cookie.isExpired(now)) { // 过期了..,没有设置expire不过期 VolleyLog.v("Cookie " + cookie + " expired"); expired = true; } else { if (cookieSpec.match(cookie, cookieOrigin)) { VolleyLog.v("Cookie " + cookie + " match " + cookieOrigin); matchedCookies.add(cookie); } } } // 有过期的Cookie存在,则去掉所有过期的Cookie if (expired) { cookieStore.clearExpired(now); } // ----------------------------------------------------------------------------------------------------- // 4、将符合条件的Cookie字符串,设置成请求头headers Map中 // ----------------------------------------------------------------------------------------------------- String cookie = cookieSpec.formatCookies(matchedCookies); if (null != cookie && cookie.length() > 0) { cookieHeaders.put("Cookie", cookie); } }
public void forwardCookies(final Request request) { if (request == null) { return; } final String host = Browser.getHost(request.getUrl()); final Cookies cookies = this.getCookies().get(host); if (cookies == null) { return; } for (final Cookie cookie : cookies.getCookies()) { // Pfade sollten verarbeitet werden...TODO if (cookie.isExpired()) { continue; } request.getCookies().add(cookie); } }
public Cookie getCookie(String name) { Cookie cookie = cookies.get(name); if (!cookie.isExpired(System.nanoTime())) return cookie; return null; }