排球网络图像视图和请求标头

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请求标头?在这种情况下我该如何处理?请帮忙

谢谢

ran*_*dom 6

NetworkImageView使用ImageLoader内部使用ImageRequestsmakeImageRequest

ImageRequestRequest扩展.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)