7

以下代码似乎总是失败:

    URL url = new URL("http://userserve-ak.last.fm/serve/126/8636005.jpg");
    Image img = ImageIO.read(url);
    System.out.println(img);

我检查了网址,它是一个有效的 jpg 图像。我得到的错误是:

线程“主”javax.imageio.IIOException 中的异常:无法从 URL 获取输入流!
在 javax.imageio.ImageIO.read(ImageIO.java:1385)
在 maestro.Main2.main(Main2.java:25)

原因:java.net.ConnectException:连接超时 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)的
java.net.PlainSocketImpl.socketConnect(Native Method)在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl. java:176) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) 在 java.net.Socket.connect(Socket.java:546) 在 java.net.Socket.connect(Socket.java:495) 在sun.net.NetworkClient.doConnect(NetworkClient.java:174) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java:409) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java: 530)








在 sun.net.www.http.HttpClient.(HttpClient.java:240)
在 sun.net.www.http.HttpClient.New(HttpClient.java:321)
在 sun.net.www.http.HttpClient.New( HttpClient.java:338)
在 sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:814)
在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:755)
在 sun .net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:680)
在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1005)
在 java.net.URL.openStream(URL .java:1029)
在 javax.imageio.ImageIO.read(ImageIO.java:1383)
... 还有 1 个

Java 结果:1

这是什么意思?有趣的是,如果我将互联网连接更改为邻居的无线连接,它会突然工作。

4

3 回答 3

9

这对我有用。:)

URL url = new URL("http://userserve-ak.last.fm/serve/126/8636005.jpg");
Image image = ImageIO.read(url.openStream());
System.out.println(image);

我知道我迟到了。因为,即使我也遇到了同样的问题,我也想到了推杆,因为它会帮助一些人。:)

于 2013-07-03T12:28:39.840 回答
2

这在家庭网络上可能不太可能,但很多公司都有 HTTP 代理服务器,这会使您的错误有点误导。由于您的浏览器配置为使用您的代理服务器,因此 URL 通常会手动显示正常工作。您可以在命令行或代码中设置代理设置,请参阅:http: //java.sun.com/javase/6/docs/technotes/guides/net/proxies.html

于 2010-06-11T14:11:46.587 回答
0

这段代码非常适合我。

如果您的互联网连接速度非常慢,那就是原因。或者您正在下载/上传内容(http、torrent、ftp、...)

我已经手动检查了 url,它是有效的,并且包含一个有效的 jpg 图像。

编辑:

你在浏览器中测试过吗?如果是这样,也许它的超时时间更长。
您是否使用浏览器在自己的网络 上对其进行了测试?

这是什么意思?

超时异常意味着您无法创建 Socket。这可能有几个原因:

  • 服务器没有响应。
    • 服务器很忙。
  • 包裹丢失。这也可能有几个原因:
    • 您正在下载,您的宽带已满。
    • 您远离互联网提供商的“中心”。(你住在乡下)
于 2010-06-11T14:29:50.693 回答