一开始,我发送了一个重定向,并在 HttpServletResponse 上设置了 cookie,但后来我决定不重定向,只获取从 servlet 提供的信息,但问题是我无法在此 post 方法上设置 cookie。
所以我想知道如何使用postmethod设置cookie以及是否有办法处理HttpServletResponse中的cookie
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;
}
最佳答案
在servlet中,您可以使用 HttpServletRequest#getCookies()
获取客户端发送的所有cookie .
Cookie[] cookies = request.getCookies();
// ...
您可以使用 HttpServletResponse#addCookie()
在响应上设置 cookie .
response.addCookie(new Cookie(name, value));
<小时/>
在 HttpClient 3.x 中(我假设您使用的是 3.x,因为 4.x 上不再存在 executeMethod()
方法),您可以将 cookie 添加到HttpState
,然后在HttpClient
执行该方法之前将其设置。
HttpState state = new HttpState();
state.addCookie(new Cookie(".example.com", "name", "value"));
HttpClient client = new HttpClient();
client.setState(state);
// ...
执行该方法后,您可以通过以下方式获取(更新的)cookie
Cookie[] cookies = client.getState().getCookies();
// ...
关于java - java上http post方法、HttpServletResponse和cookie的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518014/