2012-06-07 13 views
8

Używam android DownloadManager API do pobierania plików z serwera mojej szkoły. Mam pozwolenie na dostęp do tych plików za pomocą loginu, ale nie byłem w stanie wymyślić, jak przesłać pliki cookie z moim DownloadManager.Request Kod pobierania znajduje się poniżej. dm to globalny DownloadManager, a url to skrypt php do pobrania, który przekierowuje do pliku, zwykle pdf/doc/etc.Czy to możliwe, aby przesłać pliki cookie w Android DownloadManager

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
Request request = new Request(Uri.parse(url)); 
dm.enqueue(request); 

Intent i = new Intent(); 
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); 
startActivity(i); 

Działa to dobrze, ale pojawia się pobrany plik HTML, który jest strona logowania stronie mojej szkoły. Oczywiście muszę jakoś przesłać ciasteczka sesyjne użytkownika, ale nie widzę żadnego sposobu na zrobienie tego w dokumentacji.

Odpowiedz

18

Pliki cookie są wysyłane za pośrednictwem nagłówka HTTP (o nazwie odpowiednio "Cookie"), a na szczęście DownloadManager.Request has a method, aby dodać własne nagłówki.

Więc czego chcesz zrobić coś takiego:

Request request = new Request(Uri.parse(url)); 
request.addRequestHeader("Cookie", "contents"); 
dm.enqueue(request); 

Będziesz musiał zastąpić „zawartość” z rzeczywistej zawartości ciasteczek, oczywiście. Klasa CookieManager powinna być przydatna, aby pobrać bieżący plik cookie dla witryny, ale jeśli to się nie powiedzie, inną opcją byłoby podanie przez aplikację żądania logowania i pobranie zwróconego pliku cookie.

+3

To zadziałało idealnie. Już ręcznie zarządzałem ciasteczkami w 'Map ', więc było to tak proste jak formatowanie jako 'KEY1 = VALUE1; KEY2 = VALUE2;' i przekazanie go do funkcji, o której wspomniałeś. Dzięki! – Logiraptor

+0

To jest po prostu idealne - poszedłem na kilka innych dróg, ale to przybite! Dostaję pliki cookie z witryny onPageFinished, wywołując "CookieManager.getInstance(). GetCookie (url);" i mogę wtedy użyć wyniku bezpośrednio jako wartości Cookie! – slott

Powiązane problemy