我使用Volley和NetworkImageView。这在几个项目中一直很好用。然而,现在我需要在我的图像请求中发送授权令牌。最佳方法是什么?在我的普通请求中,我覆盖了getHeaders()并以这种方式放置了我的令牌。但是ImageLoader(NetworkImageView使用的内容)生成通用请求,很难添加标题...
我使用Volley和NetworkImageView。这在几个项目中一直很好用。然而,现在我需要在我的图像请求中发送授权令牌。最佳方法是什么?在我的普通请求中,我覆盖了getHeaders()并以这种方式放置了我的令牌。但是ImageLoader(NetworkImageView使用的内容)生成通用请求,很难添加标题...
我想出了一个解决方案。要使用NetworkImageView,您需要创建一个图像加载器。在代码的这一部分,只需覆盖ImageLoader
的makeImageRequest()
方法,并在其中覆盖'ImageRequest'的getHeaders()
方法 :
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;
}
};
}
};
这只是一行代码而已 :)
我已经测试过了,它对我来说可以使用。
onGetImagesSuccess()
在 ImageLoader 中具有私有访问权限。 - Otacilio Oliveirahttps://github.com/leofirespotter/ubervolley
还在这里添加了一个圆角 NetworkImageView,复制自(http://solutionforandroid.blogspot.com/2013/12/rounded-networkimageview-using-volley.html)