關於從URLConnection獲取流的順序問題

今天寫一段代碼,向服務器發送一段報文,而後獲取服務器的響應java

其中發送報文的代碼以下:服務器

//...
outputStream = connection.getOutputStream();
inputStream = connection.getInputStream();

PrintWriter outPrintWriter = new PrintWriter(outputStream);
outPrintWriter.print(params);
outPrintWriter.flush();
//...

運行起來以後發現鏈接是創建起來了,可是服務端什麼也沒收到。抓包一看,客戶端這邊根本沒發請求報文,只是創建了一個連接。spa

對照網上的例子看了半天,不知道問題出在哪裏。code

查到最後,發現,若是把輸入流的獲取放在發送報文的邏輯以後,那麼報文就能夠發送出去。代碼以下:get

//...
outputStream = connection.getOutputStream();

PrintWriter outPrintWriter = new PrintWriter(outputStream);
outPrintWriter.print(params);
outPrintWriter.flush();
		
inputStream = connection.getInputStream();//放到了發送報文以後
//...

這樣,報文就能夠發送出去了。input

對於這其中的原理,我不明白。it

若是有了解Servlet運行機制的朋友,請指點一二,我將萬分感激。io

相關文章
相關標籤/搜索