如何在我的应用启动时阻止默认浏览器生成新会话?

时间:2012-07-08 09:25:59

标签: android servlets

我使用HttpUrlConnection连接servlet,servlet将sessionid返回给我的app,然后我的app启动默认浏览器。在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的值不同( )。

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

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

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

1 个答案:

答案 0 :(得分:0)

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