java - 无法在 Android 上使用 URL 下载图像

标签 java android web-scraping picasso

我正在尝试使用以下几行代码在我的 Android 应用程序中下载图片

InputStream in = new java.net.URL(url).openStream();
mIcon11 = BitmapFactory.decodeStream(in);

查看示例,这显然是一种非常常见的方法。但是,它输出空值。我还尝试使用另一个库 Picasso:

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 list 中有互联网权限。有什么想法吗?

最佳答案

当您将图片 url 放入浏览器时,它会重定向到 https://

将代码中的 url 更改为 https://,它应该可以工作。

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

如果您成功找到图像,您将收到一个 200 OK 代码。

关于java - 无法在 Android 上使用 URL 下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365069/

相关文章:

android - AlarmManager 无法正常工作

android - iOS 相当于在 Android 中启动一个 Activity

python - 网页抓取时的 <p> 和 <div> 顺序

Python Mechanize 提交表单数据

java - GWT 中的 XML 解析

java - 如何测试 Jboss 7AS 的 POODLE 漏洞

java - 测试 Spring 存储库 - 始终无法正确调用 EntityManager 加载和删除

java - Apache xmlrpc - 客户端通知

android - "phonegap run android"phonegap 3 windows下无法建工程

python - Web 抓取 LinkedIn 没有给我 html...。我做错了什么?