簡體   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