java-ImageIO.read()返回403错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-ImageIO.read()返回403错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2242字,纯文字阅读大概需要4分钟。
内容图文
![java-ImageIO.read()返回403错误](/upload/InfoBanner/zyjiaocheng/694/f9d7bbd521f14b49884044b290f5888e.jpg)
我有以下代码:
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)
错误的原因可能是什么?谢谢.
解决方法:
ImageIO.read(URL)方法打开具有几乎所有默认设置的URL连接,包括User-Agent属性(将设置为您正在运行的JVM版本).显然,您列出的网站希望使用更“标准”的UA.使用直接的telnet连接进行测试:
ImageIO.read(url)发送的请求:
GET /newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg HTTP/1.1
User-Agent: Java/1.7.0_17
Host: www.earthtimes.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
Connection: keep-alive
响应代码为404(至少对我来说),并返回默认的text / html页面.
“标准”浏览器发送的请求:
GET /newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg HTTP/1.1
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
Host: www.earthtimes.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
Connection: keep-alive
响应码为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());
内容总结
以上是互联网集市为您收集整理的java-ImageIO.read()返回403错误全部内容,希望文章能够帮你解决java-ImageIO.read()返回403错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。