kul*_*eep 1 android json lotus-domino android-volley
我有网络图像视图,当我以JSON格式从服务器获得响应时,它应该被填充.
我在json中找回了一个URL,然后转到URL并在android的列表视图中显示该图像.但是,如果我使用在互联网上公开托管的任何图像,这可以正常工作.
在我看来,服务器在IBM Domino上,一切都在多米诺骨牌数据库中.除非我有用户凭据,否则URL不会打开.
对于使用volley的一般请求响应,我在请求标头中设置会话ID,告诉多米诺骨牌服务器我已经验证了自己.但是,在网络图像视图的情况下,我无法继续,因为我不知道如何使用服务器验证自己.
图像没有显示在列表视图中,我在logcat中看到了以下内容
SkImageDecoder::Factory returned null
Run Code Online (Sandbox Code Playgroud)
我试图在浏览器中打开相同的URL,它询问我的用户ID密码,如果我登录,我可以在我的系统上下载jpg文件.
有没有办法为网络图像视图设置我的http请求标头?在这种情况下我该如何处理?请帮忙
谢谢
NetworkImageView使用ImageLoader内部使用ImageRequestsmakeImageRequest
ImageRequest从Request扩展.Requestclass有一个getHeaders()允许设置请求标头的方法.
所以,如果你可以覆盖makeImageRequest的方法ImageLoader,然后覆盖getHeaders()了ImageRequest里面,你应该能够设置你的要求标头NetworkImageView
@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)