I use Volley and NetworkImageView. This has been working great for several projects. However I need to send auth token in headers for my image request right now. What is the best way to do this? In my normal requests I override getHeaders() and put my token in that way. But ImageLoader which is what NetworkImageView uses generates a generic Request, making it hard to add headers...
I have come up with a solution.
In order to use NetworkImageView you need to create an image loader. At this point of the code, just overide the makeImageRequest() method of ImageLoader, and inside makeImageRequest(), overide the getHeaders() method of 'ImageRequest' :
imageLoader = new ImageLoader(requestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
}) {
@Override
protected Request<Bitmap> makeImageRequest(String requestUrl, int maxWidth, int maxHeight, final String cacheKey) {
//return super.makeImageRequest(requestUrl, maxWidth, maxHeight, cacheKey);
return new ImageRequest(requestUrl, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
onGetImageSuccess(cacheKey, response);
}
}, maxWidth, maxHeight,
Bitmap.Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onGetImageError(cacheKey, error);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("Authorization", YOUR_TOKEN);
return params;
}
};
}
};
This is technically one line of code :) I have tested this and it works for me.
Haven't found an easy way of doing this. I have forked Volley to accomplish what I needed. Feel free to use if you need it.
https://github.com/leofirespotter/ubervolley
Also added in here is making a rounded NetworkImageView copied from (http://solutionforandroid.blogspot.com/2013/12/rounded-networkimageview-using-volley.html)
来源:https://stackoverflow.com/questions/22568505/adding-authentication-headers-to-networkimageview-in-volley