今天寫一段代碼,向服務器發送一段報文,而後獲取服務器的響應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