1

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

我猜这里有一些微不足道的东西,但我刚刚开始使用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); 
           } 
    }); 

我怎样才能让下载管理器下载生成的文件?

回答

2

经过对此的更多工作后,我发现问题:似乎android的DownloadManager 需要 Content-Length头部出现在响应中,这是我没有为我生成的文件发送的。