Ich möchte Volley's NetworkImageView
verwenden, um Bilder von meiner REST-API zu laden, die eine einfache HTTP-Autorisierung benötigt. Also muss ich der HTTP-Anfrage Header hinzufügen.Android Volley ImageLoader - Wie grundlegende HTTP-Autorisierung zu verwenden?
Ich habe folgende Ansätze hergestellt:
Aufschalten Request.getHeaders()
- wie in this question beschrieben. Das wäre in Ordnung, aber das Problem ist, dass ImageLoader
hat new ImageRequest()
hardcoded, so kann ich nicht meine Request
Implementierung in ImageLoader
übergeben und es kann nicht leicht geerbt werden und optimiert (die Methode, die ich neu implementieren müsste verwendet private Eigenschaften).
Die Lösung ist, Volley-Bibliothek selbst zu ändern (was ich vermeiden möchte).
Verwenden Sie benutzerdefinierte HttpClientStack - wie beschrieben here. Mit diesem Ansatz wäre ich in der Lage, HTTP-Kommunikation abzufangen und notwendige Header hinzuzufügen. Aber ich denke, das ist nicht der richtige Weg - ich würde die automatische Auswahl von HttpClient durch Volley (Gingerbread vs. HC und IC) verlieren.
Gibt es eine einfachere Möglichkeit, dies zu erreichen, die ich vermisse?
Vielen Dank für Ihre Antwort. Es ist schade, dass es keinen einfacheren Weg gibt. Ich mache es so, wie Sie es vorgeschlagen haben - durch die Änderung von ImageLoader, um die benutzerdefinierte ImageRequest-Klasse zu verwenden (indem Sie eine ImageRequestFactory erstellen und an ImageLoader übergeben). Wenn ich recht habe, sind die anonymen Listener nur an ImageRequest und nicht an ImageRequest selbst, also sollte das kein Problem sein. – lopisan
gibt es eine anonyme ImageRequest zum Aufrufen von GetImageSuccess (cacheKey, Antwort); in onResponse (obwohl ich das direkt in ImageRequest oder sogar in Anfrage gestellt hätte.) – njzk2