2017-01-14 141 views
0

我正在製作一個服務器來顯示一個HTML頁面作爲大學評估。所有文件都存儲在本地。使用Firefox連接到服務器(鉻似乎阻止圖像)。如何在Java中正確發送HTTP響應到客戶端

如果我輸入的是真實傳送HTML文件本身就是一個HTTP響應下面的代碼工作正常(我打字「HTTP/1.1 200 OK」在HTML文件開頭)

   { 

        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();     

       } 

任何見解將不勝感激:)

回答

0

你應該閱讀有關HTTP請求,當瀏覽器發出請求開放服務器和客戶端之間的通信通道,即您正在寫入的流,客戶端收到響應後,此通道關閉。

在你的代碼中,你正在響應一次,但第二次流已經關閉,這就是響應正文永遠不會到達客戶端的原因。當沒有錯誤或代碼另有說明時,服務器也會自動發送200代碼。

0

既然你正在嘗試製作一個http服務器,那麼看看here 就很好了,它解釋瞭如何處理http請求&響應。

相關問題