有没有可能在Android下载pipe理器中提交Cookie

我正在使用android DownloadManager API从我学校的服务器上下载文件。 我有权限访问这些文件与login,但我一直无法弄清楚如何提交Cookie与我的DownloadManager.Request下载代码如下。 dm是一个全局的DownloadManagerurl是一个redirect到一个文件的php下载脚本,通常是pdf / doc / etc。

 dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); Request request = new Request(Uri.parse(url)); dm.enqueue(request); Intent i = new Intent(); i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(i); 

这工作正常,但我得到一个HTML文件下载,这是我学校网站的login页面。 很明显,我需要以某种方式提交用户的会话cookie,但是在文档中我看不到任何这样做的方法。

Solutions Collecting From Web of "有没有可能在Android下载pipe理器中提交Cookie"

Cookies通过HTTP标头发送(命名为“Cookies”),幸运的是,DownloadManager.Request 有一个方法来添加自己的标头。

所以你想要做的是这样的:

 Request request = new Request(Uri.parse(url)); request.addRequestHeader("Cookie", "contents"); dm.enqueue(request); 

当然,你必须用实际的cookie内容replace“内容”。 CookieManager类应该对获取当前网站的cookie有用,但是如果失败了,另一种select是让你的应用程序发出login请求并抓取返回的cookie。