【问题标题】:Alternative to java.net.URL for custom timeout setting用于自定义超时设置的 java.net.URL 的替代方案
【发布时间】:2011-07-18 03:00:22
【问题描述】:

需要对使用 java.net.URL 类进行的远程数据请求进行超时设置。经过一番谷歌搜索,发现有两个系统属性可用于设置 URL 类的超时,如下所示。

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

我无法控制所有系统,也不希望每个人都继续设置系统属性。是否有任何其他替代方法可以发出远程请求,这将允许我设置超时。 如果没有任何库,最好在 java 本身中可用。

【问题讨论】:

    标签: java url timeout


    【解决方案1】:

    如果您从URL 打开URLConnection,您可以这样设置超时:

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

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

    【讨论】:

    • 他可能会直接调用URL#openStream(),这确实会使用默认超时。
    • 读取超时工作正常,但连接超时接缝不起作用
    【解决方案2】:

    一个常见的替代品是Apache Commons HttpClient,它可以更好地控制获取 HTTP URL 的整个过程。

    【讨论】:

      猜你喜欢
      • 2017-11-05
      • 2019-01-23
      • 2018-07-24
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2020-02-09
      • 2019-04-16
      相关资源
      最近更新 更多