是否可以在Android DownloadManager中提交cookie

Log*_*tor 9 cookies android download

我正在使用android DownloadManagerAPI从我学校的服务器下载文件.我有权使用登录访问这些文件,但我无法弄清楚如何使用我DownloadManager.Request的提交cookie 下载代码如下.dm是一个全球性的DownloadManager,url是一个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);
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*sen 22

Cookie是通过HTTP标头发送的(命名,足够恰当,"Cookie"),幸运的是,DownloadManager.Request 有一个添加自己标头的方法.

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

Request request = new Request(Uri.parse(url)); 
request.addRequestHeader("Cookie", "contents");
dm.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

当然,您必须将"内容"替换为实际的cookie内容.该CookieManager类应该是让该站点的当前Cookie是有用的,但如果失败,另一种选择是让你的应用程序中进行的登录请求,并抢回来的cookie.

  • 这非常有效.我已经在`Map <String,String>`中手动管理cookie,所以它就像格式化`KEY1 = VALUE1; KEY2 = VALUE2;`并将其传递给你提到的函数一样简单.谢谢! (4认同)