我目前正在寻找一种在Android上启动默认浏览器应用程序并将会话cookie传递给它的方法。
我的应用程序使用HttpClient与我无法控制的外部API通信,然后将用户传递到站点进行最后阶段。
我知道这可能是使用WebView的,但我特别需要打开外部浏览器应用程序而不是使用内部WebView。
我知道:
Intent.ACTION_VIEW
可以用来打开浏览器,但是我还没有设法找到有关实际传递任何其他数据的更多信息。
非常感谢任何帮助。
答案 0 :(得分:6)
我目前正在寻找一种在Android上启动默认浏览器应用程序并传递会话的方法 饼干给它。
这是不可能的,抱歉。
答案 1 :(得分:4)
你知道url-rewrite吗?它将帮助您实现您的需求。 url-write可能是这样的: 的 “http://本地主机:8080 /测试/ 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);
您可以从HttpClient获取的会话ID,并将其添加到您的网址后面。
还有一些问题需要注意。首先,在url中,分隔符是“;”不是“?”,因为sessionid在http标头中,而不是http主体。其次,如果浏览器已经与服务器进行了会话,那么url-rewrite将无法工作,因为浏览器将使用自己的会话来解决此问题,您可以使用app来获取浏览器的会话并使用此会话在HttpClient中。