Chcę użyć Volley'a NetworkImageView
do załadowania obrazów z mojego interfejsu REST API, który wymaga podstawowej autoryzacji HTTP. Muszę więc dodać nagłówki do żądania HTTP.Android Volley ImageLoader - Jak korzystać z podstawowej autoryzacji HTTP?
Zrobiłem się następującymi metodami:
Override Request.getHeaders()
- jak opisano w this question. To byłoby w porządku, ale problem polega na tym, że ImageLoader
ma new ImageRequest()
na stałe, więc nie mogę przekazać mojej implementacji Request
do ImageLoader
i nie można go łatwo odziedziczyć i zmodyfikować (metoda, której potrzebuję do ponownego zastosowania, używa właściwości prywatnych).
Rozwiązaniem jest modyfikacja samej biblioteki Volley (czego chciałbym uniknąć).
Użyj niestandardowego pliku HttpClientStack - zgodnie z opisem here. Korzystając z tego podejścia, będę w stanie przechwycić komunikację HTTP i dodać niezbędne nagłówki. Ale myślę, że nie jest to właściwy sposób - straciłbym automatyczny wybór HttpClient przez Volley (Gingerbread vs. HC and IC).
Czy jest jakiś prostszy sposób na osiągnięcie tego, czego mi brakuje?
Dziękuję za odpowiedź. Szkoda, że nie istnieje prostsza droga. Zrobię to tak, jak zasugerowałeś - modyfikując ImageLoader, aby użyć niestandardowej klasy ImageRequest (tworząc i przekazując ImageLoaderowi ImageRequestFactory). Jeśli mam rację, anonimowi są tylko słuchacze przekazani do ImageRequest, a nie ImageRequest, więc nie powinno to stanowić problemu. – lopisan
jest anonimowy ImageRequest do wywołania onGetImageSuccess (cacheKey, odpowiedź); w onResponse (chociaż umieściłbym to bezpośrednio w ImageRequest, a nawet w Request). – njzk2