DownloadManager与Cookie身份验证
问题描述:
我想使用DownloadManager从我的服务器解析与JSESSIONID的cookie的zip文件。我得到了这个JSESSIONID,使用HTTPCLIENT lib进行我所有的进程登录,并设置一个变量JSESSIONID供以后在我的DownloadManager请求中使用。DownloadManager与Cookie身份验证
我的下载请求:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(htmlUrlDownload));
request.addRequestHeader("Cookie", "JSESSIONID=" + JSESSIONID);
request.addRequestHeader(Constants.USER_AGENT, Constants.TARGET_REQUEST_HEADER);
request.setDescription("Baixando " + metaDado.getType());
request.setTitle("Download");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
String nameFile = offlineUuid + ".zip";
fileName = nameFile;
filePath = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DOWNLOADS
+ File.separator + fileName;
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nameFile);
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long downloadId = manager.enqueue(request);
的问题是,下载永远不会启动和COLUMN_REASON返回代码ERROR_UNHANDLED_HTTP_CODE
但是,如果我尝试使用Dropbox的链接来下载同一个文件,而无需身份验证或使用httpclient,它是完美的,我做错了什么?
如何获得更好的味精错误?
答
您的代码没有错,好像您的服务器正在响应HTTP重定向staus代码,这是导致DownloadManager无法处理下载。
从Android电子文档: -
公共静态最终诠释ERROR_UNHANDLED_HTTP_CODE
在API级别9 COLUMN_REASON价值当HTTP代码为 收到了下载管理器无法处理。
请参见下面的代码片段: -
于Android Framework的源代码DownloadManger.java
case Downloads.Impl.STATUS_UNHANDLED_HTTP_CODE:
case Downloads.Impl.STATUS_UNHANDLED_REDIRECT:
return ERROR_UNHANDLED_HTTP_CODE;
所以你需要检查你的服务器日志针对此问题,或通过直接文件链接直接下载经理不会导致任何重定向。
同时请注意,你需要下面两种权限在AndroidManifest.xml中下载如预期
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
做ü检查服务器日志工作? – Akhil 2013-04-15 17:47:49
我无法访问它。当我说我的服务器时,是我使用的服务器,是否明白? :( – 2013-04-16 13:51:24
反正重定向在下载管理器中不受支持,并且由于重定向,您的下载请求失败。** [此链接可能对您有用](http://stackoverflow.com/a/13212978/1677824)** .. – Akhil 2013-04-16 15:47:25