0

我目前正在制作一个 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()));

我对客户端和服务器都有完整的源代码访问权限,因此任一端的解决方案都可以工作。

4

2 回答 2

1

你不断地重新创建你的 HttpClient;除非您有自己的 cookie 存储实现,可以跨实例保存 cookie 或以其他方式恢复它们,否则它们将继续消失。

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html

于 2013-08-14T04:35:03.863 回答
0

我相信 tomcat 使用 aJSESSIONID来维护会话。这被存储为 cookie。为了使同一会话保持活动状态,您需要将 cookie 与您的下一个HttpRequest.

于 2013-08-14T04:40:07.900 回答