1

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);
                                }
    });

生成されたファイルをダウンロード マネージャーにダウンロードさせるにはどうすればよいですか?

4

1 に答える 1

2

これについてさらに作業した後、問題が見つかりました.androidの DownloadManagerは、応答に Content-Length ヘッダーが必要なようです。これは、生成されたファイルに送信していないものです。

于 2014-01-01T22:56:13.350 に答える