Android DownloadManager不保存文件

时间:2013-12-15 18:12:07

标签: android cookies android-webview android-download-manager

我遇到了Android的DownloadManager和WebView的问题。有几个链接返回当前用户生成的文件(PDF等)。这些链接仅适用于登录用户,因此我将身份验证cookie传递给DownloadManager。我可以从服务器日志中看到这种方法正常工作:下载URL的所有命中都是通过应用程序cookie完成的,服务器正在接受这一点并为正确的用户生成正确的文件。但是,下载管理器中的所有条目都列为不成功。

我想我在这里缺少一些微不足道的东西,但我刚刚开始使用Android而我没有看到它。

以下是MainActivity代码的一部分:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.setDownloadListener(new DownloadListener() {
    public void onDownloadStart(String url,
                                String userAgent,
                                String contentDisposition,
                                String mimetype,
                                long contentLength) {
                                    String cookie = CookieManager.getInstance().getCookie(url);
                                    DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                                    Request request = new Request(Uri.parse(url));
                                    request.addRequestHeader("Cookie", cookie);
                                    dm.enqueue(request);
                                }
    });

如何让下载管理器下载生成的文件?

1 个答案:

答案 0 :(得分:2)

经过多方面的工作,我发现了问题:似乎android的DownloadManager 需要响应中出现的Content-Length标头,我没有为生成的文件发送。