如何在Java中正确地向客户端发送HTTP响应

时间:2017-01-14 02:36:44

标签: java html http server

我正在使服务器显示HTML页面作为大学评估。所有文件都存储在本地。使用Firefox连接到服务器(chrome似乎阻止图像)。

如果我在传输的HTML文件中输入HTTP响应,那么下面的代码就可以正常工作(我正在输入' HTTP / 1.1 200 OK'在HTML文件的开头)

                {   

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

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

                }

但是,如果我首先尝试发送HTTP响应,然后是HTML,它拒绝加载我的HTML代码中指定的图像。

以下是Code i试图解决问题:

                 {  

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

                }

非常感谢任何见解:)

2 个答案:

答案 0 :(得分:0)

当浏览器发出请求打开服务器和客户端之间的通信通道(您正在写入的流)时,您应该阅读有关HTTP请求的信息,一旦客户端收到响应,此通道就会关闭。

在您的代码中,您只响应一次,但第二次流已经关闭,这就是响应主体永远不会到达客户端的原因。此外,当没有错误或代码另有说明时,服务器会自动发送200代码。

答案 1 :(得分:0)

由于您正在尝试制作http服务器,因此最好查看here 它解释了如何处理http请求&响应。