Скопируйте содержимое HttpMethod в другой HttpMethod - PullRequest
0 голосов
/ 30 декабря 2011

Я пытался обработать редирект (302) в Java-коде, и теперь, когда я сделал это с помощью своего кода. Я столкнулся с другой проблемой, в которой после входа в систему, нажмите на любую ссылку, я выйду из системы. Поэтому я проверил свой TCP-поток через wireshark и обнаружил, что пропало немного 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:

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

Согласно моим наблюдениям, я не скопировал содержимое заголовка должным образом, и поэтому он быстро выходит из системы. Поэтому мой вопрос заключается в том, как я могу скопировать весь контент 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 голосов
/ 30 декабря 2011

HttpClient может автоматически обрабатывать перенаправления, если вы установите стратегию.Следуйте этому посту на примере использования Httpclient 4, ошибка 302. Как перенаправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...