[英]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.