Desidero utilizzare Volley's NetworkImageView
per caricare immagini dalla mia API REST che richiede l'autorizzazione HTTP di base. Quindi ho bisogno di aggiungere intestazioni alla richiesta HTTP.Android Volley ImageLoader - Come utilizzare l'autorizzazione HTTP di base?
Ho fatto la seguenti approcci:
Override Request.getHeaders()
- come descritto nella this question. Questo va bene, ma il problema è che ImageLoader
ha new ImageRequest()
hardcoded quindi non posso passare l'implementazione Request
a ImageLoader
e non può essere ereditata e ottimizzata facilmente (il metodo che avrei bisogno di reimplement utilizza proprietà private).
La soluzione è modificare la libreria Volley stessa (cosa che vorrei evitare).
Utilizzare HttpClientStack personalizzato - come descritto here. Utilizzando questo approccio sarei in grado di intercettare la comunicazione HTTP e aggiungere le intestazioni necessarie. Ma penso che questo non sia il modo giusto di fare: perderei la selezione automatica di HttpClient by Volley (Gingerbread vs. HC e IC).
C'è qualche modo più semplice per ottenere questo che mi manca?
Grazie per la risposta. È un peccato che non esista un modo più semplice. Lo farò nel modo che hai suggerito: modificando ImageLoader per utilizzare la classe ImageRequest personalizzata (creando e passando a ImageLoader a ImageRequestFactory). Se ho ragione, gli anonimi sono solo ascoltatori passati a ImageRequest, non a ImageRequest stesso, quindi non dovrebbe essere un problema. – lopisan
c'è un ImageRequest anonimo per chiamare onGetImageSuccess (cacheKey, response); in onResponse (anche se lo avrei messo direttamente in ImageRequest, o anche in Request.) – njzk2