【发布时间】:2014-03-05 06:40:02
【问题描述】:
我制作了一个 java 程序,用于从任何网站的可选目录中下载一些图像。 一切正常,但有时它不会继续下载,但会在一段时间后抛出 SocketException。这里是错误日志:
...
62.png downloaded
63.png downloaded
64.png downloaded
65.png downloaded
66.png downloaded
Exception in thread "main" java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at DownloadImage.main(DownloadImage.java:35)
文件不是问题。有时它停在第 5 张图像,有时停在第 70 张图像。这似乎很随机。
我怀疑与我尝试访问的网址的连接不均匀。但是我该如何解决呢?我试图将连接和读取超时设置为一个有趣的值
huc.setConnectTimeout(3600000);
huc.setReadTimeout(3600000);
但它没有解决它。
有什么想法吗?还是我的问题有其他根源?
【问题讨论】:
-
您无法从您的端解决服务器端的问题。设置读取超时总是一个好主意,但是这个值很傻,不会影响这个问题。将连接超时设置为一个巨大的值是没有意义的,因为 (a) 你不能将它增加到超过大约一分钟的平台默认值,并且 (b) 它与这个问题无关。
-
好的,我认为超时会使我的客户端等待服务器响应的时间更长。那么我必须想另一个解决方案。谢谢!
-
你能告诉我们你的源代码吗?也许您没有以正确的方式检查错误。 (发生错误...)
标签: java timeout httpurlconnection socketexception