用于自定义超时设置的java.net.URL替代方案

21

需要为使用java.net.URL类进行的远程数据请求设置超时时间。通过一些谷歌搜索,发现可以使用两个系统属性来为URL类设置超时时间,如下所示。

sun.net.client.defaultConnectTimeout  
sun.net.client.defaultReadTimeout

我无法控制所有系统,并且不希望每个人都设置系统属性。是否有其他替代方法可以进行远程请求,以便允许我设置超时时间。 如果Java本身有此功能而无需使用任何库,则最好。

2个回答

60

如果您从URL打开一个URLConnection,可以按以下方式设置超时:

URL url = new URL(urlPath);
URLConnection con = url.openConnection();
con.setConnectTimeout(connectTimeout);
con.setReadTimeout(readTimeout);
InputStream in = con.getInputStream();

你是如何使用 URL 的,或者你将它传递给了什么?


2
他很可能只是调用了 URL#openStream(),这确实会使用默认的超时时间。 - BalusC
读取超时完美运作,但连接超时似乎不起作用。 - agad

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接