我尝试使用以下情侣代码行在我的Android应用中下载图片
InputStream in = new java.net.URL(url).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
这显然是一种非常常见的方法,看一些例子。但是,它输出null。我也试过使用另一个图书馆,毕加索:
Picasso.with(context).load("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png").into(iv);
这也行不通,让我相信问题出在其他地方。当我记录onImageLoadFailed
监听器时,我得到了
com.squareup.picasso.Downloader$ResponseException: 302 Found
at com.squareup.picasso.UrlConnectionDownloader.load(UrlConnectionDownloader.java:96)
at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:47)
没有任何意义。 我的Android Manifest中有互联网权限。任何想法可能是什么?
答案 0 :(得分:5)
将图片网址放入浏览器后,会重定向到https://
将您的代码中的网址更改为https://,它应该有效。
当发生重定向时,通常会使用302 Found代码。就像这里的情况一样。它被重定向到https://协议,浏览器会看到这个并检查重定向网址的数据并带您到那里。 Picasso和InputStream不会检查重定向代码,因此不会加载图像,但同时不会返回错误,因为它不是404找不到的响应。 在wikipedia上可以找到一个很好的HTTP响应代码列表。
如果您成功找到图像,则会返回200 OK代码。
答案 1 :(得分:0)
您使用过Android Glide Library吗?请参阅此视频教程。这将帮助你。