簡體   English   中英

如何使用Java將HTTP響應正確發送到客戶端

[英]How to properly send HTTP response to Client in Java

我正在制作服務器以顯示HTML頁面作為大學評估。 所有文件都存儲在本地。 使用Firefox連接到服務器(Chrome似乎阻止了圖像)。

如果我在要傳輸的HTML文件本身中鍵入HTTP響應,則下面的代碼可以正常工作(我在HTML文件開頭輸入“ HTTP / 1.1 200 OK”)

                {   

                    byte[] pageToBytes = Files.readAllBytes(webContent.toPath());

                    os.write(pageToBytes); 
                    os.flush();
                    os.close();                  

                }

但是,如果我嘗試先發送HTTP響應,然后再發送HTML,則它拒絕將圖像加載到HTML代碼中指定的圖像中。

這是我試圖找出問題的代碼:

                 {  

                    byte[] pageToBytes = Files.readAllBytes(webContent.toPath());


                    String HttpOK = "HTTP/1.1 200 OK\n\r";

                    os.write(HttpOK.getBytes());                        
                    os.write(pageToBytes); 
                    os.flush();
                    os.close();                  

                }

任何見解將不勝感激:)

您應該閱讀有關HTTP請求的信息,當瀏覽器發出請求打開服務器和客戶端之間的通信通道(即您正在寫入的流)時,一旦客戶端收到響應,該通道就會關閉。

在您的代碼中,您只響應一次,但是第二次關閉流時,這就是響應主體永遠不會到達客戶端的原因。 此外,如果沒有錯誤或代碼另有說明,則服務器會自動發送200代碼。

由於您正在嘗試制作http服務器,因此在此處進行介紹很不錯,它說明了如何處理http請求和響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM