Java 1.5下具有超时的HTTP连接

时间:2015-11-30 13:47:51

标签: java http timeout

我使用java.net.HttpURLConnection开发了一个简单的低级Web服务访问。

我需要为连接和读取设置超时,这似乎可以在Java 1.6及更高版本中使用,但对于Java 1.5,我完全不知所措。

是否有可以满足我需求的HttpURLConnection的替代品?

我现在的代码是这样的:

wget -O- http://user:pass@192.168.1.1/RST_conn_status.htm       \
| perl -ne '/var info_get_wanip="((\d+\.){3}(\d+))"/ and print $1'  \
> test.txt

一旦我从输出流中读取响应,我就完成了。但是,1.5以下HttpURLConnection的实现似乎缺少两种相关的方法。

1 个答案:

答案 0 :(得分:0)

我认为你没有使用JDK 1.5,我在eclipse中创建了一个java(1.5)项目,它允许我使用这两种方法。

    HttpURLConnection a = (HttpURLConnection)new URL("URL").openConnection();
    a.setConnectTimeout(0);
    a.setReadTimeout(0);

并且在方法的描述中说它是从1.5开始的

<强> setConnectTimeout

  

设置要在何时使用的指定超时值(以毫秒为单位)   打开通向此引用的资源的通信链接   URLConnection的。如果超时在连接之前到期   建立后,引发了java.net.SocketTimeoutException。暂停时间   零被解释为无限超时。

     

这种方法的一些非标准实现可能会忽略   指定超时。要查看连接超时设置,请致电   getConnectTimeout()。

     

参数:timeout一个指定连接超时值的int   milliseconds抛出:IllegalArgumentException - 如果超时   参数为负自:   的 1.5

<强> setReadTimeout

  

将读取超时设置为指定的超时,以毫秒为单位。一个   非零值指定从输入流读取时的超时   何时建立与资源的连接。如果超时到期   在有可读数据之前,a   引发java.net.SocketTimeoutException。超时为零   被解释为无限超时。

     

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

     

参数:timeout一个int,指定要使用的超时值   以毫秒为单位抛出:IllegalArgumentException - 如果超时   参数为负自:   的 1.5

您还可以从oracle

查看API文档

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setConnectTimeout(int)

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html

它表示 HttpURLConnection 继承自 URLConnection ,两种方法公开,因此它们位于 HttpURLConnection 类中