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