繁体   English   中英

超时超过我在`java.net.URLConnection`中设置的时间

[英]Timeout is more than I set in `java.net.URLConnection`

我正在尝试为java.net.URLConnection设置超时,如下所示:

URL url = new URL("http://google.com");
URLConnection con = url.openConnection();
con.setConnectTimeout(2000);
con.setReadTimeout(2000);
InputStream in = con.getInputStream();
doc = new Tidy().parseDOM(in, null);
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("//td//span");
Node form = (Node) expr.evaluate(doc, XPathConstants.NODE);

问题是,当我将超时设置为2000(2秒)时,它等待的时间超过了它的时间(例如我自己计算的20秒),直到抛出Timeout异常为止。

问题是什么?
如何设置超时以使其完全符合我设置的值?

readTimeOut无法在Sun(Oracle)的实现中可靠地工作。 JavaDocs甚至提到了这一点:

此方法的某些非标准实现会忽略指定的超时。 要查看读取超时设置,请调用getReadTimeout()。

不过,您可以使用线程或计时器来模拟超时。 将连接传递给子线程,并在超时到期后要求该线程调用disconnect或类似操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM