0

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

4

1 回答 1

4

问题是您的服务器正在将请求 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

于 2014-09-10T09:00:24.193 回答