将HttpMethod的内容复制到另一个HttpMethod

时间:2011-12-29 23:59:50

标签: java http java-ee redirect header

我已经尝试过处理java代码中的重定向(302),现在我已经完成了我的代码。我遇到了另一个问题,登录后,点击我登出的任何链接。所以我通过wireshark检查了我的TCP流,发现很少HeaderRequests丢失。实现我的代码后,Http Header如下:

GET /index.php/ HTTP/1.1
Host: 10.28.161.31
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24
Cookie: PHPSESSID=d488eea5e85afc8ec526c1a749e7ab20; path=/
Referrer: http://10.28.161.31
Cookie: $Version=0; PHPSESSID=d488eea5e85afc8ec526c1a749e7ab20; $Path=/ ???

和原始的Http Headers如下:

GET / HTTP/1.1
Host: 10.28.161.31
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24
Referer: http://10.28.161.31/index.php
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: PHPSESSID=978ee1e3b3696743c5c8f507a2ec7212

根据我的观察,我没有正确复制Header的内容,这就是它快速退出的原因。所以我的问题是,如何将HttpMethod的完整内容复制到另一个HttpMethod?如果任何人都可以提供代码片段或者示例/教程会很棒或者如果任何人能够让我了解我做错事的地方,那将是可观的。

我的实施就在这里:

private HttpMethod loadHttp302Request(HttpMethod method, HttpClient client,
                int status, String urlString) throws HttpException, IOException {
    if (status!=302)
        return null;
    String[] url = urlString.split("/");        
    HttpMethod theMethod = new GetMethod(urlString + method.getResponseHeader("Location").getValue());
    theMethod.setRequestHeader("Cookie", method.getResponseHeader("Set-Cookie")
                    .getValue());
    theMethod.setRequestHeader("Referrer",url[0]+"//"+url[2]);
    int _status = client.executeMethod(theMethod);
    return theMethod;
}

1 个答案:

答案 0 :(得分:0)

如果您设置策略,HttpClient可以自动处理重定向。关注使用示例Httpclient 4, error 302. How to redirect?

上的这篇文章