我使用Volley和NetworkImageView。这对于几个项目一直很有效。但是,我现在需要在我的图像请求的 header 中发送身份验证 token 。做这个的最好方式是什么?在我的普通请求中,我重写getHeaders()并以这种方式放置我的 token 。但是NetworkImageView所使用的ImageLoader会生成一个通用的Request,这使得添加标题变得困难。

最佳答案

我想出了一个解决方案。
为了使用NetworkImageView,您需要创建一个图像加载器。在代码的这一点上,只需覆盖makeImageRequest()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;
                }
            };
        }
    };

从技术上讲这是一行代码:)
我已经对此进行了测试,并且对我有用。

关于android - 在Volley中将身份验证 header 添加到NetworkImageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22568505/

10-09 21:04