2015-11-30 29 views
2

我已經通過使用java.net.HttpURLConnection開發了一個簡單的Web服務低級訪問。Java 1.5下的超時HTTP連接

我需要設置連接和閱讀的超時時間,這在Java 1.6或更高版本中似乎是可能的,但是對於Java 1.5我完全處於虧損狀態。

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

我的代碼現在的問題是這樣的:

 oURL = new URL(this.endpoint); 
     httpCon = (HttpURLConnection)oURL.openConnection(); 

     httpCon.setDoOutput(true); 
     httpCon.setDoInput(true); 

     httpCon.setConnectTimeout(this.connect_timeout); 
     httpCon.setReadTimeout(this.read_timeout); 

     httpCon.setRequestMethod("POST"); 
     httpCon.setRequestProperty("Content-type", "text/xml; charset=utf-8"); 
     httpCon.setRequestProperty("SOAPAction", this.endpoint+"#"+req.getOperationName()); 


     reqStream = httpCon.getOutputStream(); 
     reqStream.write(reqXML.getBytes()); 

一旦我讀輸出流的響應,我完成了。但是,1.5下的HttpURLConnection的實現似乎缺少兩種相關的方法。

+0

您使用的是jdk 1.5嗎?或jdk 1.4? – reos

+0

它運行在Java 1.5下 –

+0

但在1.5中有兩種方法http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html – reos

回答

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()。

參數:超時指定在 毫秒的連接超時值的int拋出: - 如果超時 參數爲負時間: 1.5

setReadTimeout

以毫秒爲單位將讀取超時設置爲指定的超時DS。 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的類。

+0

噢我的,你是完全正確的...我已經在生產應用服務器下進行了測試,它在1.4下運行,但根據我的客戶,它是1.5 ... 我不知道我是否可以重命名這個問題或無效...因爲它是無用的,我害怕:( –