Heritrix3.1.0RC1使用Cookie不能自动登录问题的一个解决办法
改FetchHTTP类,
?
1、在innerProcess方法中的代码
this.http.executeMethod(customConfigOrNull, method);
之前增加:
populateCookies(method);
?
2、增加私有方法如下:
private void populateCookies(HttpMethodBase method) { Map<String, Cookie> cookieMap = cookieStorage.getCookiesMap(); //没设置Cookie. if(cookieMap == null || cookieMap.size() == 0) { return; } StringBuilder sb = new StringBuilder(""); for(Cookie cookie : cookieMap.values()) { sb.append(cookie.getName()); sb.append('='); sb.append(cookie.getValue()); sb.append(';'); } method.setRequestHeader("Cookie", sb.deleteCharAt(sb.length() - 1).toString()); }?
3、修改AbstractCookieStorage类,在记录日志的代码之前增加
result.put(cookie.getSortKey(), cookie)
?把Cookie放入到Map中,在FetchHTTP的start()方法中,得到配置文件中设置的Cookies。
?
?
?
?