Ich verwende die android DownloadManager
API, um Dateien vom Server meiner Schule herunterzuladen. Ich habe die Erlaubnis, auf diese Dateien mit einem Login zuzugreifen, aber was ich nicht herausfinden konnte, ist, wie ich Cookies mit meinem DownloadManager.Request
abschicke. Der Download-Code ist unten. dm
ist ein globales DownloadManager
, und url
ist ein PHP-Download-Skript, das zu einer Datei umleitet, normalerweise pdf / doc / etc.
Das funktioniert gut, aber ich bekomme eine HTML-Datei heruntergeladen, die die Anmeldeseite meiner Schulwebseite ist. Offensichtlich muss ich die Session-Cookies des Benutzers irgendwie übermitteln, aber ich sehe keine Möglichkeit, dies in der Dokumentation zu tun.
Cookies werden über einen HTTP-Header (mit dem passenden Namen "Cookie") gesendet, und zum Glück, DownloadManager.Request hat eine Methode , um eigene Header hinzuzufügen.
Was Sie also tun möchten, ist etwa so:
%Vor%Sie müssen "Inhalt" natürlich durch den eigentlichen Cookie-Inhalt ersetzen. Die CookieManager -Klasse sollte nützlich sein, um das aktuelle Cookie für die Site zu erhalten, aber falls das fehlschlägt, Eine andere Möglichkeit wäre, dass Ihre Anwendung eine Anmeldeanforderung einreicht und den zurückgegebenen Cookie abholt.