在我的应用中,我有一个实现downloadlistener的webview。下载侦听器使用HttpUrlConnection下载具有给定URL的文件。 当我登录某个安全网站时,我遇到问题,比如dropbox.com(来自我的webview),然后尝试下载一些文件。我收到错误403 HTTP_FORBIDDEN。
是因为下载浏览器打开的HttpUrlConnection未知Webview持有的会话吗?
如何在我的webview和HttpUrlConnection之间共享同一个会话(共享sessionID?cookie?httpclient?)?
谢谢!
答案 0 :(得分:2)
DownloadListener是android中比较讨厌的界面之一(为什么他们不能只传递你的流超出我,它必须已经提出要求将信息传递给DonwloadListener)无论如何,是的,你的HttpUrlConnection对webview中当前正在播放的任何cookie一无所知。您可以使用CookieManager
从WebView获取有关cookie的详细信息,然后将它们添加到基于HttpUrlConnection的请求中,如下所示,
String cookie = CookieManager.getInstance().getCookie(url);
if (cookie != null) req.setRequestProperty("cookie", cookie);
答案 1 :(得分:0)
Is it because the session held by the Webview is unknown to the HttpUrlConnection opened by the downloadlistener?
可能。
为什么不在登录后使用相同的WebView
下载文件?
myWebView.loadUrl(downloadURL);