使用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时读取超时错误的主要内容,如果未能解决你的问题,请参考以下文章