无法在Android上使用网址下载图片

时间:2016-11-01 17:11:10

标签: java android web-scraping picasso

我尝试使用以下情侣代码行在我的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中有互联网权限。任何想法可能是什么?

2 个答案:

答案 0 :(得分:5)

将图片网址放入浏览器后,会重定向到https://

将您的代码中的网址更改为https://,它应该有效。

当发生重定向时,通常会使用302 Found代码。就像这里的情况一样。它被重定向到https://协议,浏览器会看到这个并检查重定向网址的数据并带您到那里。 Picasso和InputStream不会检查重定向代码,因此不会加载图像,但同时不会返回错误,因为它不是404找不到的响应。 在wikipedia上可以找到一个很好的HTTP响应代码列表。

如果您成功找到图像,则会返回200 OK代码。

答案 1 :(得分:0)

您使用过Android Glide Library吗?请参阅此视频教程。这将帮助你。

https://www.youtube.com/watch?v=FOYdcq86NpU