Vic*_*rte 4 android download-manager android-download-manager
我正在尝试使用DownloadManager从我的服务器解析带有JSESSIONID的cookie来获取一个zip文件.我正在使用HTTPCLIENT lib获取此JSESSIONID所有进程登录并设置变量JSESSIONID以供稍后在我的DownloadManager请求中使用.
我的下载请求:
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);
Run Code Online (Sandbox Code Playgroud)
问题是下载永远不会启动,COLUMN_REASON会将代码返回给ERROR_UNHANDLED_HTTP_CODE
但是,如果我尝试使用Dropbox链接下载相同的文件而无需身份验证或使用httpclient,它的工作完美,我做错了什么?
如何获得更好的消息错误?
您的代码没有任何问题,似乎您的服务器正在使用HTTP重定向状态代码进行响应,这导致DownloadManager无法处理下载.
来自Android文档: -
public static final int ERROR_UNHANDLED_HTTP_CODE
在API级别9中添加了当收到下载管理器无法处理的HTTP代码时COLUMN_REASON的值.
见下面的代码片段: -
来自Android Framework的源代码DownloadManger.java
case Downloads.Impl.STATUS_UNHANDLED_HTTP_CODE:
case Downloads.Impl.STATUS_UNHANDLED_REDIRECT:
return ERROR_UNHANDLED_HTTP_CODE;
Run Code Online (Sandbox Code Playgroud)
因此,您需要检查服务器日志中是否存在此问题,或者将直接文件URL传递给下载管理器,该管理器不会导致任何重定向.
另请注意,Androidmanifest.xml中需要以下两个权限才能下载,以便按预期工作
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3887 次 |
| 最近记录: |