通用图像加载器和毕加索没有加载一些图像URL

时间:2014-09-10 08:31:51

标签: android universal-image-loader picasso imageurl imagedownload

我在我的Android应用程序中使用listView,它有一个textView和一个imageView。 从我想要显示的web服务URL到imageView。 但许多图片网址没有加载。我尝试使用“Android通用图像加载器”和“Picasso”来下载图像URL。我尝试了这些API示例应用程序与我的图像URL和相同的结果。 图片网址有效。所有图像都在浏览器中打开。 为什么有些图像加载了一些没有加载的图像?我不懂为什么。 谢谢你的回答。

1 个答案:

答案 0 :(得分:3)

问题是您的服务器正在将请求URL更改为移动设备,并且移动服务器中的图像不存在。强制UIL使用其他代理应该使服务器不重定向您的请求。

在DisplayImageOptions上使用UIL尝试此操作

Map<String, String> headers = new HashMap<String, String>();
headers.put("User-Agent","");
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.dummyhotelimage)
.showImageForEmptyUri(R.drawable.dummyhotelimage)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.extraForDownloader(headers)
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.EXACTLY)
.build();
ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(getActivity()).imageDownloader(new CustomImageDownloader(context)).build());
ImageLoader.getInstance().displayImage(fullImageUrl, holder.img_hotel, options);

然后创建一个自定义的ImageDownloader

public class CustomImageDownaloder extends BaseImageDownloader {

    public CustomImageDownaloder(Context context) {
        super(context);
    }

    public CustomImageDownaloder(Context context, int connectTimeout, int readTimeout) {
        super(context, connectTimeout, readTimeout);
    }

    @Override
    protected HttpURLConnection createConnection(String url, Object extra) throws IOException {
        HttpURLConnection conn = super.createConnection(url, extra);
        Map<String, String> headers = (Map<String, String>) extra;
        if (headers != null) {
            for (Map.Entry<String, String> header : headers.entrySet()) {
                conn.setRequestProperty(header.getKey(), header.getValue());
            }
        }
        return conn;
    }
}

来源:https://github.com/nostra13/Android-Universal-Image-Loader/issues/340