Httpclient是一个很方便地http客户端,本身支持自动重定向功能。但是由于在做一些认证网站时重定向页面很可能会进行一些cookie的设置。
       比如163邮箱中跳转时就在重定向页面设置Coremail的值,而3.1版本存在一个缺陷。就是无法将重定向页面中的cookie值追加到当前cookie中。
       我对源代码进行了修改,解决了此问题。希望帮忙遇到此问题的朋友。
       下载commons-httpclient-3.1-src.zip,然后编辑 HttpMethodDirector.java 文件的 processRedirectResponse 方法。
       以下是我的修改:
    private boolean processRedirectResponse(final HttpMethod method)
     
throws RedirectException {

        
//wcy set cookie start
        Header newCookieHeader = method.getResponseHeader("Set-Cookie");
        Header currentCookieHeader 
= method.getRequestHeader("Cookie");
        
if(newCookieHeader!=null){
            
if(currentCookieHeader==null){
                method.setRequestHeader(
"Cookie", newCookieHeader.getValue());                
            }
else{
                method.setRequestHeader(
"Cookie", currentCookieHeader.getValue()+""+newCookieHeader.getValue());
            }
            
        }
 
        
//wcy set cookie over
        
     }