使用java读取URL时读取超时错误

Posted

技术标签:

【中文标题】使用java读取URL时读取超时错误【英文标题】:Read Timed Out Error in reading URL using java 【发布时间】:2014-03-07 13:28:46 【问题描述】:

我返回了一个代码来使用 jsoup-1.7.3.jar 读取网页,它适用于某些网站,但对于某些 URls 给出读取超时错误.... .

线程“main”java.net.SocketTimeoutException 中的异常:读取定时 在 java.net.SocketInputStream.socketRead0(Native Method) 处 java.net.SocketInputStream.read(SocketInputStream.java:152) 在 java.net.SocketInputStream.read(SocketInputStream.java:122) 在 java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 在 java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 在 java.io.BufferedInputStream.read(BufferedInputStream.java:334) 在 sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) 在 sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323) 在 java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468) 在 org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:443) 在 org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:424) 在 org.jsoup.helper.HttpConnection.execute(HttpConnection.java:178) 在 org.jsoup.helper.HttpConnection.get(HttpConnection.java:167) 在 Main.main(Main.java:10)

【问题讨论】:

... 如果您尝试使用浏览器(或 curl)访问这些网址之一会发生什么? @millhouse::使用 curl 或浏览器他们从来没有给我错误。 【参考方案1】:

正如ooxi 提到的,你可以设置一个超时时间

Jsoup.connect("").timeout(5*1000).get() //which sets timeout for 5 seconds

编辑:您可以通过连接指定超时

Connection connection = Jsoup.connect("");
connection.timeout(5*1000); // which sets timeout for 5 seconds

【讨论】:

即使在添加超时(5 * 1000)后,单击运行后它也会立即给我同样的错误 @AnkitKumar 可能是代码示例可以帮助解决错误 就我而言,我添加了.userAgent("Opera") 选项并解决了问题【参考方案2】:

在调用.get之前你可以设置一个超时时间

Jsoup.connect(url).timeout(0).get();

看看Jsoup和Connection的JavaDocs

【讨论】:

以上是关于使用java读取URL时读取超时错误的主要内容,如果未能解决你的问题,请参考以下文章

加载项目存储库时发生 SonarQube 5.1.1 读取超时错误

将大文件从本地机器复制到 S3 时读取端点 URL 超时

Java:套接字读取超时异常

使用 jdbc 驱动程序读取大表时超时和内存不足错误

超时错误:Pandas 中的 JSON 请求

如何使用 Python 读取大型 Firestore 集合而不会遇到 503 超时错误