我使用Volley和Network
ImageView.这对几个项目来说非常有用.但是我现在需要在标题中为我的图像请求发送auth令牌.做这个的最好方式是什么?在我的正常请求中,我覆盖getHeaders()并以这种方式放置我的令牌.但ImageLoView使用的ImageLoader会生成一个通用的Request,因此很难添加标题……
解决方法
我想出了一个解决方案.
要使用NetworkImageView,您需要创建一个图像加载器.在代码的这一点上,只是覆盖了ImageLoader的makeImageRequest()方法,并且在makeImageRequest()内部,覆盖了’ImageRequest’的getHeaders()方法:
要使用NetworkImageView,您需要创建一个图像加载器.在代码的这一点上,只是覆盖了ImageLoader的makeImageRequest()方法,并且在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); } },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; } }; } };
这在技术上是一行代码:)我测试了这个,它对我有用.