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
        

     }