ImageIO.read() 返回 403 错误

2023-11-23

我有以下代码:

public BufferedImage urlToImage(String imageUrl) throws MalformedURLException, IOException {
    URL url = new URL(imageUrl);
    BufferedImage image = ImageIO.read(url);
    return image;
}

应该从给定的 URL 返回图像。

我用这两个随机选择的 URL 进行了测试:

  • https://www.google.co.ma/images/srpr/logo4w.png
  • http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg

第一个工作正常,但第二个给出 403 错误:

Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at java.net.URL.openStream(URL.java:1010)
at javax.imageio.ImageIO.read(ImageIO.java:1367)

错误的原因可能是什么?谢谢。


The ImageIO.read(URL)方法使用几乎所有默认设置打开 URL 连接,包括User-Agent属性(将设置为您正在运行的 JVM 版本)。显然,您列出的网站需要更“标准”的用户获取。使用直接 telnet 连接进行测试:

请求发送者ImageIO.read(url):

获取 /newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg HTTP/1.1
用户代理:Java/1.7.0_17
主办方:www.earthtimes.org
接受:文本/html、图像/gif、图像/jpeg、*; q=.2,/; q=.2
连接:保持活动状态

响应代码是 404(至少对我来说),默认值text/html正在返回页面。

“标准”浏览器发送的请求:

获取 /newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg HTTP/1.1
用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_7_5)AppleWebKit/537.31(KHTML,如 Gecko)Chrome/26.0.1410.65 Safari/537.31
主办方:www.earthtimes.org
接受:文本/html、图像/gif、图像/jpeg、*; q=.2,/; q=.2
连接:保持活动状态

响应码是200,带有图像数据。

以下简单的修复会延长您的代码,但通过设置更“标准”的 UA 来解决问题:

final String urlStr = "http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg";
final URL url = new URL(urlStr);
final HttpURLConnection connection = (HttpURLConnection) url
        .openConnection();
connection.setRequestProperty(
    "User-Agent",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");
final BufferedImage image = ImageIO.read(connection.getInputStream());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ImageIO.read() 返回 403 错误 的相关文章

  • 使用Java获取CSS文件中图像的URL?

    我正在尝试使用 Java 获取远程 CSS 文件中图像 所有 MIME 类型 的 URL 我正在使用 jsoup 来获取 css 的 URL 经过无数个小时的观看CSS解析器 http cssparser sourceforge net 由
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 如何避免 Java 中的忙旋转

    我有一个多线程应用程序 其中一个线程向另一个线程发送消息 等待线程轮询消息并做出反应 处理锁 像这样 等待线程代码 while true if helloArrived System out println Got hello if bye
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • JFreeChart - 创建移动图表时出现问题

    我在我的 java 应用程序中使用 JFreeChart Problem 我想绘制一个XY面积图 whose 域轴 x 轴 当我们开始绘制数据时应该自动水平滚动 我在中看到了同样的事情时间序列图表但我不想要任何时间系列图表 我只想要滚动的
  • @Cachable 在没有输入参数的方法上?

    我有问题 org springframework cache annotation Cachable注解 Bean public ConcurrentMapCache cache return new ConcurrentMapCache
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • FXML 文件中的 getHostServices().showDocument()

    有没有简单的方法可以将 getHostServices showDocument 命令放入 toHomepage 方法中 而不是执行一行又一行的代码 这样代码应该看起来干净简单 package sample import javafx ap
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • 处理 ANTLR 4 中的错误

    遵循后接受的答案 https stackoverflow com a 18137301 2279200的指示处理 ANTLR4 中的错误 https stackoverflow com q 18132078 2279200问题 我遇到了以下
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • logcat 信息出现在 Android Studio 的“运行”选项卡中

    我的 android studio 运行选项卡很简单 然后它变得更难并给我更多信息 例如 logcat 中的信息 如何禁用或删除第二张图片中出现的更多信息并返回到第一张图片中的第一个外观 我只需要正在运行的 flutter 应用程序的日志输
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • Java 中 .NET 的 Lambda 表达式

    我最近 再次 从 C 迁移到 Java 但我非常怀念 lambda 表达式和 C 的 IEnumerable Foreach 之类的东西 所以我正在寻找Java中的lambda表达式库 有比这更好的图书馆吗LambdaJ http code
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • Java 应用程序启动,ProcessBuilder 一段时间后被阻止

    我正在开发一个 Java 桌面应用程序 我们称之为控制台 包含 3 个按钮 其中两个启动 Win32 应用程序 第三个应该启动一个可执行的 jar ProcessBuilder pb new ProcessBuilder java jar
  • Jackson 的 ObjectMapper 和 SQL 中的 RowMapper

    我们正在使用对象映射器 当将 ObjectMapper 与 RowMapper 一起使用时 是否应该在每个 mapRow 内部 如下所示 声明它 还是在 mapRow 外部声明为类公共成员 我认为根据本文 它应该作为公共类成员在外部 我应该
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav

随机推荐

  • SFTP 路径格式与本地路径格式

    我正在编写一些 Java 代码 使用 JSch 库 通过 SFTP 到远程 Windows 计算机 并将文件复制到我的本地 Windows 文件夹 当指定远程计算机上的文件路径时 我被迫以以下格式指定路径 C temp myfile txt
  • Android MediaPlayer:基于 URI 播放 Raw 音频资源

    我试图解决的问题是在一个需要播放音频文件的活动中 大多数文件将由用户创建 并保存到外部存储中 因此使用以下代码播放 基于 Google 的示例代码 MediaPlayer mPlayer new MediaPlayer mPlayer se
  • python manage.py runserver、shell、dbshel​​l 在 git-bash 上冻结

    我试图在 Windows 的 git bash 上的 python virtualenv 中运行交互式 shell 但它没有运行 奇怪的是 它似乎没有做任何事情 只是光标在下一行上闪烁 没有给出任何输出 python manage py s
  • 如何在 EPPlus 中将数据透视表报表布局设置为表格?

    查看 EPPlus 附带的示例 我已成功创建数据透视表 但无法为其设置正确的报告布局 我希望它是 表格 而不是 轮廓 或其他什么 对我来说 EPPlus 现在似乎不支持这一点 但也许我错过了一些东西 事实证明 这比我想象的要容易得多 通过将
  • Android WebView:按钮响应非常滞后

    我制作了一个小网络应用程序来使用 Android 的 WebView 功能 我有一些用作按钮的 div 带有onclick属性 尝试该应用程序后 在设备的浏览器中 我立即注意到点击按钮后有很大的延迟 当我点击按钮和浏览器在其周围显示橙色突出
  • Python:停止正在等待用户输入的线程

    我试图让我的脚本在用户按下返回键时触发用户输入 然后主程序将检查 txUpdated 标志并使用该输入 我有一个在 python 中运行的线程 它只是等待用户输入 class InputThread threading Thread def
  • Eclipse IDE 支持 JSF 2.0 吗?

    我安装了 WTP 3 1 插件 还安装了 Glassfish v3 插件 我可以注册我的服务器 当我创建动态 Web 项目时 我可以看到可用的最大动态 Web 模块版本是 2 5 然后 我选择 Glassfish v3 的默认配置 但是当我
  • pandas if else 条件多列[重复]

    这个问题在这里已经有答案了 假设我有以下 df import pandas as pd data dic a 0 0 1 2 b 0 3 4 5 c 6 7 8 9 df pd DataFrame data dic Result a b c
  • 如何使用 R 调用/执行 imageJ 宏?

    我在 imageJ 中编写了一个宏 它会输出一个数据帧 然后在 R 中对其进行分析 我希望能够在 R 中完成整个过程 而不必先在 imageJ 中手动运行该宏 目前 宏会提示用户输入和输出目录 然后执行操作 我想 R 中一定有一个函数可以让
  • 在 Eclipse 中生成 JavaDocs 时出现“找不到模块”消息

    我正在尝试在我的应用程序中生成 JavaDocs 但是 当我尝试时 我收到以下消息 application src module info java 5 error module not found javafx base requires
  • 无法使用 exoPlayer 2.11 播放 MKV Matroska 视频

    当我尝试播放时在我的视频播放器中MKV Matroska文件保持静止 视频未播放 我跟着CodeLabs and ExoPlayer开发并构建可以播放的播放器 MP4但无法播放 MKV 这是我的播放器 exoplayer 2 11 5 pr
  • Pandas pd.Series.isin 集合与数组的性能

    一般来说 在 Python 中 可哈希集合的成员资格最好通过以下方式进行测试set 我们知道这一点是因为散列的使用为我们提供了 O 1 查找复杂度 而对于list or np ndarray 在 Pandas 中 我经常需要检查非常大的集合
  • System.Diaganostics.Process.Id 与任务管理器中显示的进程 ID 不同。为什么?

    我正在使用 C System Diagnostic Process object 它的属性之一是Id The Id这产生的与PID 如图所示Windows Task Manager 为什么是这样 你看 一旦这个过程开始 它启动了另外两个非托
  • 有没有一种简单的方法可以将相机的 onPreviewFrame 中的字节数组转换为 android 中的图片?

    我问是否有一个简单的方法 因为有一个谷歌问题报告说使用decodeByteArray是不可能的 但该报告起源于 2008 年 我希望那里没有发布解决方案 问题报告中列出的方法是自己解码格式 但我不想将其放入并减慢程序速度 任何帮助将不胜感激
  • 如何扩展 Node.js WebSocket Redis 服务器?

    我正在编写一个聊天服务器Acani 我有一些问题扩展 Node js and 具有负载均衡器可扩展性的 websocket Node js 负载均衡究竟意味着什么 这是否意味着会有n我的服务器应用程序运行的独立版本 每个版本都在单独的服务器
  • 登录成功后如何重定向到页面?

    我对 Web 表单开发相当陌生 正在尝试使用 VS 2010 中的 ASP NET Web 应用程序模板创建的项目 用户成功登录后 我希望将用户重定向到我创建的页面 如何修改我的项目以在登录后重定向用户 任何示例 教程 等都非常感谢 Tha
  • Base91,是怎么计算的?

    我一直在网上查找 basE91 是如何计算的 我找到了诸如this one它指定了用于特定值的字符 但我没有找到如何获取该值的方法 我尝试将输入值更改为二进制并获取 6 位和 7 位的块 但这些不起作用 并且我得到了不正确的输出 我不想要为
  • 有没有类似 GhostDoc 的 C++ 工具

    当我使用 C 进行开发时 我大量使用 GhostDoc 来加快代码注释的过程 我目前正在开发一个 C 项目 但尚未找到等效的工具 我了解 Doxygen 但据我所知 它用于在代码外创建文档 而不是在代码中创建注释 有没有好的等效工具 我更喜
  • WPF:如何循环浏览窗口中的所有控件?

    如何循环遍历 WPF 窗口中的所有控件 我在MSDN 文档所以这有帮助 Enumerate all the descendants of the visual object static public void EnumVisual Vis
  • ImageIO.read() 返回 403 错误

    我有以下代码 public BufferedImage urlToImage String imageUrl throws MalformedURLException IOException URL url new URL imageUrl