是否有任何类用于读取返回java.io.InputStream
的http页面并且其超时是否可靠?
我尝试了java.net.URLConnection
并且它没有可靠的超时(设置为超时范围需要更多时间)?我的代码在这里:
URLConnection con = url.openConnection();
con.setConnectTimeout(2000);
con.setReadTimeout(2000);
InputStream in = con.getInputStream();
答案 0 :(得分:2)
我希望超时不起作用的原因是您在建立连接后设置了超时,或者您使用了错误的setter。您也可能使用URLConnection的“非标准”版本...
“此方法的某些非标准实现会忽略指定的超时。要查看读取超时设置,请致电
getReadTimeout()
。”(或getConnectTimeout()
)
如果你发布了实际代码的相关部分,我们可以给你一个更好的答案......
或者,使用Apache HttpClient库。
答案 1 :(得分:1)
您可以使用Apache HttpClient读取http页面,它还有一个http解析器。检查这个以进一步reference about httpclient。你可以像这样使用他们的API来获取一个InputStream对象。
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet("http://www.apache.org/");
// Execute the request
HttpResponse response = httpclient.execute(httpget);
// Examine the response status
System.out.println(response.getStatusLine());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if (entity != null) {
InputStream instream = entity.getContent();
并且到了超时部分,它完全取决于网络,你不能从你的java代码做很多事情。