具有cookie认证的DownloadManager



我试图使用DownloadManager解析一个cookie与JSESSIONID从我的服务器得到一个zip文件。我得到这个JSESSIONID做我所有的进程登录使用HTTPCLIENT库和设置一个变量JSESSIONID供以后使用在我的下载管理器请求。

我的下载请求:

    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

但是,如果我尝试使用没有身份验证或使用httpclient的dropbox链接下载相同的文件,它的工作完美,我做错了什么?

我怎样才能得到一个更好的msg错误?

您的代码没有问题,似乎您的服务器正在响应HTTP重定向状态代码,这导致DownloadManager无法处理下载

From Android Docs:-

public static final int ERROR_UNHANDLED_HTTP_CODE

API级别9新增HTTP代码为时,COLUMN_REASON的值收到下载管理器无法处理。

参见下面的代码片段:-

下载manager .java
case Downloads.Impl.STATUS_UNHANDLED_HTTP_CODE:
                case Downloads.Impl.STATUS_UNHANDLED_REDIRECT:
                    return ERROR_UNHANDLED_HTTP_CODE;

所以你需要检查你的服务器日志这个问题,或者直接传递文件url到下载管理器,这不会导致任何重定向。

还请注意,您需要以下两个权限在您的Androidmanifest.xml下载工作如预期

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

相关内容

  • 没有找到相关文章

最新更新