2012-02-21 43 views
0

首先,我打開一個連接並將一些數據發送到服務器。接下來我收到回覆。在java.net.HttpURLConnection中重新打開連接的方式

HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 

wr = new OutputStreamWriter(connection.getOutputStream()); 
wr.write("some text sent to server"); 
wr.flush(); 

//read the server answer 
rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
... 

我需要的是重複整個循環 - 發送數據並接收答案。問題是,如果我使用相同的對象,則得到IOException:流關閉。如果我嘗試做一個新的對象:

wr = new OutputStreamWriter(connection.getOutputStream()); 

我得到的ProtocolException:因爲請求頭已經發送的OutputStream不可用!。如果我斷開連接並建立新連接,這並不重要 - 它們都是一樣的。

有什麼方法可以重新打開連接?

我在Android上製作它,但我不確定它是否會在這種情況下產生任何影響。

回答

1

您需要再次撥打url.openConnection()並獲得新的連接。 HttpURLConnection應該足夠聰明以重用現有連接,如果請求是對同一主機。從文檔引用:

Each HttpURLConnection instance is used to make a single request but the underlying network connection to the HTTP server may be transparently shared by other instances. 
+0

謝謝!事實證明,這是一個簡單的解決方案,顯然工作(在添加'connection.setDoOutput(true);'後) – alex 2012-02-21 12:19:23

相關問題