0

我使用HttpUrlConnection与servlet连接,servlet将sessionid返回给我的应用程序,然后我的应用程序启动默认浏览器。在servlet返回sessionid之前,我在会话中设置了一个属性。

    HttpSession session = request.getSession();
    session.setAttribute("ErrorInfo", "wrong!");

在 android 应用程序中,它获取 sessionid 并启动默认浏览器。

    Uri uri = Uri.parse("https://192.168.1.100:8443/test/error.jsp;jsession=" + sessionid);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

在error.jsp中,它会得到这样的属性:

    <%=session.getAttribute("ErrorInfo") %>
    <%=session.getId() %>

测试的时候,我以为会显示“错误!”,但是jsp页面显示“null”,浏览器生成了一个新的会话。地址栏中的sessionid与session.getId()的值不同。

例如地址栏中的url是“https://192.168.1.100:8443/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096”。

在这种情况下,我认为浏览器不应该生成新的会话,但它确实生成了。

好的,我自己解决了这个问题。问题是由浏览器引起的。首先,我使用浏览器访问网站,浏览器生成一个会话,然后浏览器会使用这个会话,直到浏览器关闭。所以我的应用程序传递的 sessionid 将被浏览器忽略。为了解决这个问题,我让app获取浏览器的session,并在HttpUrlConnection中使用这个session,所以整个过程只有一个session。

4

1 回答 1

0

你可以尝试使用'?代替 ';' 附加 queryString 部分时,您的 URL 中的字符?

于 2012-07-08T16:25:41.453 回答