Android:使用提供的会话Cookie打开浏览器

rbl*_*blk 8 android android-intent

我目前正在寻找一种在Android上启动默认浏览器应用程序并将会话cookie传递给它的方法.

我的应用程序与外部API进行通信,我无法使用HttpClient对其进行控制,然后将用户传递到站点进行最后阶段.

我知道这可能是使用WebView,但我特别需要打开外部浏览器应用程序而不是使用内部WebView.

我知道:

Intent.ACTION_VIEW
Run Code Online (Sandbox Code Playgroud)

可用于打开浏览器,但是我没有设法找到有关实际传递任何其他数据的大量信息.

任何帮助深表感谢.

Com*_*are 7

我目前正在寻找一种在Android上启动默认浏览器应用程序并将会话cookie传递给它的方法.

对不起,这是不可能的.


小智 5

你知道 url-rewrite 吗?它将帮助您实现您的需求。一个 url-write 可能是这样的:“http://localhost:8080/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096”。

“jsessionid”是 sessionid 的键,C4E6732EBB4C17F409AB41143735C096 是值。表示 sessionid 属性的关键取决于 web 项目中使用的语言。

所以,如果你想保留会话,你可以像这样启动默认值:

    Uri uri = Uri.parse("http://localhost:8080/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

您可以从 HttpClient 获取的 sessionid,并将其添加到您的 url 后面。

还有一些问题需要注意。首先,在url中,分隔符是“;” 不是“?”,因为 sessionid 在 http 标头中,而不是在 http 正文中。其次,如果浏览器已经与服务器有会话,那么 url-rewrite 将不起作用,因为浏览器将使用自己的会话,要解决这个问题,您可以使用您的应用程序获取浏览器的会话并使用此会话在 HttpClient 中。