예제 #1
0
  // 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);
   }
 }
예제 #3
0
  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);
    }
  }
예제 #4
0
 public Cookie getCookie(String name) {
   Cookie cookie = cookies.get(name);
   if (!cookie.isExpired(System.nanoTime())) return cookie;
   return null;
 }