在Volley的NetworkImageView中添加身份验证头信息

7

我使用Volley和NetworkImageView。这在几个项目中一直很好用。然而,现在我需要在我的图像请求中发送授权令牌。最佳方法是什么?在我的普通请求中,我覆盖了getHeaders()并以这种方式放置了我的令牌。但是ImageLoader(NetworkImageView使用的内容)生成通用请求,很难添加标题...


请查看我的答案。 - Siavash
2个回答

6

我想出了一个解决方案。要使用NetworkImageView,您需要创建一个图像加载器。在代码的这一部分,只需覆盖ImageLoadermakeImageRequest()方法,并在其中覆盖'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;
                }
            };
        }
    };

这只是一行代码而已 :)

我已经测试过了,它对我来说可以使用。


1
onGetImagesSuccess() 在 ImageLoader 中具有私有访问权限。 - Otacilio Oliveira
对我有用。谢谢。 - SajithK

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接