Невозможно получить изображение через ImageIO.read (URL) из-за приведенного к таймауту соединения

Следующий код всегда, кажется, перестал работать:

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

Я проверил URL, и это - действительное изображение jpg. Ошибка, которую я получаю:

Исключение в потоке "основной" javax.imageio. IIOException: не Может получить введенный поток от URL!
в javax.imageio. ImageIO.read(ImageIO.java:1385)
в маэстро. Main2.main(Main2.java:25)

Вызванный: java.net. ConnectException: Соединение приведено к таймауту
в java.net. PlainSocketImpl.socketConnect (Собственный метод)
в java.net. AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
в java.net. AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
в java.net. AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
в java.net. Socket.connect (Сокет java:546)
в java.net. Socket.connect (Сокет 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. Новый (HttpClient.java:321)
в sun.net.www.http. HttpClient. Новый (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

Что это означает? Забавная вещь, если я изменяю свое интернет-соединение с той из беспроводной связи соседа, это внезапно работает.

5
задан Shaz 26 February 2011 в 05:11
поделиться

2 ответа

Это маловероятно в домашней сети, но многие компании используют Прокси-серверы HTTP, которые могут сделать ваши ошибки немного вводящими в заблуждение. Часто кажется, что URL-адрес работает нормально вручную, потому что ваш браузер настроен на использование вашего прокси-сервера. Вы можете установить параметры прокси в командной строке или в коде, см. http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html .

2
ответ дан 13 December 2019 в 19:21
поделиться

Этот код мне подходит.

Причина в том, что у вас очень медленное интернет-соединение. Или вы загружаете / выгружаете материалы (http, торренты, ftp, ...)

Я вручную проверил URL-адрес, он действительный и содержит действительное изображение в формате jpg.

Редактировать:

Вы тестировали его в браузере? Если так, возможно, время ожидания больше.
Вы тестировали его в своей собственной сети с браузером?

Что это означает?

Исключение тайм-аута означает, что вы не можете создать сокет. Это может быть вызвано несколькими причинами:

  • Сервер не отвечает.
    • Сервер очень занят.
  • Пакеты потеряны. На это также может быть несколько причин:
    • Вы загружаете, и ваш широкополосный канал заполнен.
    • Вы находитесь далеко от «центра» интернет-провайдера. (Вы живете в деревне)
0
ответ дан 13 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: