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