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);
}
});
生成されたファイルをダウンロード マネージャーにダウンロードさせるにはどうすればよいですか?