我正在制作一个Android应用程序,它向一个tomcat服务器发出POST请求,该服务器为用户创建一个会话,尽管这些会话似乎无法正常工作。我正在为每个请求获得一个新会话。有没有办法保持这个会话或以另一种方式跟踪用户?查询服务器的代码通常如下:
HttpClient client = new DefaultHttpClient();
HttpPost post = HttpPostFactory.getHttpPost("AuthenticateUser");
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("option1", option1);
pairs.add(new BasicNameValuePair("option2", option2);
try {
post.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response = client.execute(post);
StringBuilder builder = new StringBuilder();
Scanner in = new Scanner(response.getEntity().getContent());
while (in.hasNext()) {
builder.append(in.nextLine());
}
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse(MyStringUtil.toInputStream(builder.toString()));
我对客户端和服务器都有完整的源代码访问权限,因此任何一端的解决方案都可以使用。
答案 0 :(得分:1)
你不断重新创建你的HttpClient;除非你有自己的cookie存储实现,它将在实例化过程中保留cookie或以其他方式恢复它们,否则它们将继续消失。
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html
答案 1 :(得分:0)
我相信tomcat使用JSESSIONID
来维护会话。它存储为cookie。为了使相同的会话保持活动状态,您需要将Cookie与下一个HttpRequest
一起发送。