[英]Reading request content from Java socket InputStream, always hangs after header
我正在嘗試使用核心Java從輸入流中讀取HTTP請求數據,使用以下代碼:
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
我收到標題很好,但客戶端只是永遠掛起,因為服務器永遠不會找到請求的“EOF”。 我該如何處理? 我已經看到了這個問題,並且大多數解決方案都涉及到類似上面的內容,但是它對我不起作用。 我嘗試使用curl和Web瀏覽器作為客戶端,只是發送一個get請求
謝謝你的任何想法
HTTP請求以空行結束(可選地后跟請求數據,如表單數據或文件上載),而不是EOF。 你想要這樣的東西:
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while (!(inputLine = in.readLine()).equals(""))
System.out.println(inputLine);
in.close();
除了上面的答案(因為我還沒有發表評論),我想補充一些瀏覽器,比如Opera(我猜它是做了什么,或者是我的ssl設置,我不知道)發送EOF。 即使不是這種情況,您也希望防止這種情況,以免您的服務器因NullPointerException而崩潰。
為避免這種情況,只需將null測試添加到您的條件中,如下所示:
while ((inputLine = in.readLine()) != null && !inputLine.equals(""));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.