在Android应用程序中的Servlet会话

时间:2013-08-14 04:31:25

标签: android servlets

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我相信tomcat使用JSESSIONID来维护会话。它存储为cookie。为了使相同的会话保持活动状态,您需要将Cookie与下一个HttpRequest一起发送。