2012-05-15 168 views
0

我想在使用java HttpUrlConnection類的服務器上發佈數據。看來,如果我以某種方式讀取服務器的響應,該帖子可以正常工作,但如果我不這樣做,信息永遠不會發布。java HttpUrlConnection POST:需要提交POST提交的響應提交?

在HttpUrlConnection文檔中沒有提及這種行爲,並且我見過的所有有關HttUrlConnection的示例都要求從服務器獲取響應。

我想知道如果我在我的代碼中犯了一個錯誤,或者這是HttpUrlConnection的一個正常行爲,並且如果是這樣的話,那麼能夠更好地理解這個類的作用的人可以向我解釋爲什麼這樣?

非常感謝!

下面是代碼的註釋行是一個使自檢工作或失敗:

URL url=new URL("myUrl"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); 
connection.setRequestProperty("Host", "myHost"); 
connection.setDoOutput(true); 
os.write(staffToPost.getBytes("utf-8")); 
os.flush(); 
os.close(); 
//System.out.println(connection.getResponseCode()+" "+connection.getResponseMessage()); 

回答

2

URLCOnnection類需要POST發生的完整握手。這意味着,一旦打開連接,就必須回讀POST的響應以實際發生。

+0

謝謝,那就解釋一下。 (由於某些原因,我無法訪問該鏈接,但似乎該主題已移動,我將檢查出...) – settef

+0

從搜索結果中選擇與Oracle相關的第一個鏈接。不知道爲什麼鏈接直接工作。 – UVM

+0

爲什麼在這裏?有人可以解釋嗎?謝謝 – UVM

0

您可以顯式調用URLConnection.connect()或獲取有關如HttpURLConnection.getResponseCode等,以觸發HTTP響應的任何信息HTTP請求。

爲了更好的理解,您應該通過How to use java.net.URLConnection to fire and handle HTTP requests這篇綜合性文章。

+0

我不認爲'connect()'會提交請求。儘管獲得響應代碼,消息或響應'InputStream'。 – erickson

+0

謝謝,您發送的鏈接非常有用。我嘗試使用HttpURLConnection.connect()雖然它並沒有改變任何東西。似乎我必須明確地訪問響應(使用getResponseCode(),getInputStream()...)來開啓POST ...我覺得這很奇怪。 – settef

+0

好吧,那麼我想有必要訪問提交POST的響應。感謝您的回答。 – settef