Проблемы с http post методом, HttpServletResponse и куки на java - PullRequest
0 голосов
/ 01 апреля 2011

Вначале я отправлял перенаправление с файлами cookie, установленными на HttpServletResponse, но позже я решил не перенаправлять и получать только информацию, полученную от сервлета, но проблема в том, что я не могу установить куки для этого метода записи.

Итак, я хотел бы знать, как установить cookie с помощью postmethod и есть ли способ обработки файлов cookie, которые находятся в HttpServletResponse

String temp=null;
    HttpClient client = new HttpClient();
    client.getParams().setParameter("http.useragent", "Oauth Data Requester");
    BufferedReader br = null;
    PostMethod method = new PostMethod(ADDRESS+"/SampleProvider");
    //Aqui ainda enviamos o XML inteiro como parametro
    method.addParameter("p", "\"java2s\"");
    try{
      int returnCode = client.executeMethod(method);
      if(returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
        System.err.println("no post method found");
      } else {
         temp=method.getResponseBodyAsString();
      }
    } catch (Exception e) {
      System.err.println(e);
    } finally {
      method.releaseConnection();
      if(br != null) try { br.close(); } catch (Exception e) {}
    }
    return temp;
}

1 Ответ

4 голосов
/ 02 апреля 2011

В сервлетах вы можете получить все куки, отправленные клиентом, используя HttpServletRequest#getCookies().

Cookie[] cookies = request.getCookies();
// ...

И вы можете установить куки на ответ, используя HttpServletResponse#addCookie().

response.addCookie(new Cookie(name, value));

В HttpClient 3.x (я предполагаю, что вы используете 3.x, потому что метод executeMethod() больше не присутствует в 4.x), вы можете добавить куки в HttpState и затем установить его HttpClient до выполнения метода.

HttpState state = new HttpState();
state.addCookie(new Cookie(".example.com", "name", "value"));
HttpClient client = new HttpClient();
client.setState(state);
// ...

После выполнения метода вы можете получить (обновленные) куки-файлы по

Cookie[] cookies = client.getState().getCookies();
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...