Leo*_*Leo 7 authentication android android-volley networkimageview
我使用Volley和NetworkImageView.这对几个项目来说非常有用.但是我现在需要在标题中为我的图像请求发送auth令牌.做这个的最好方式是什么?在我的正常请求中,我覆盖getHeaders()并以这种方式放置我的令牌.但ImageLoView使用的ImageLoader会生成一个通用的Request,这使得很难添加标题......
我想出了一个解决方案.要使用NetworkImageView,您需要创建一个图像加载器.在这一点上的代码,只需在此改变makeImageRequest()的方法ImageLoader和内部makeImageRequest(),在此改变getHeaders()"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;
}
};
}
};
Run Code Online (Sandbox Code Playgroud)
这在技术上是一行代码:)我测试了这个,它适用于我.
还没有找到一个简单的方法来做到这一点。我分叉了 Volley 来完成我所需要的。如果您有需要,请放心使用。
https://github.com/leofirespotter/ubervolley
此处还添加了从(http://solutionforandroid.blogspot.com/2013/12/rounded-networkimageview-using-volley.html)复制的圆形 NetworkImageView
| 归档时间: |
|
| 查看次数: |
2666 次 |
| 最近记录: |