【问题标题】:How to properly send HTTP response to Client in Java如何在 Java 中正确地向客户端发送 HTTP 响应
【发布时间】:2017-05-29 12:18:33
【问题描述】:

我正在制作一个服务器来显示 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();                  

                }

任何见解将不胜感激:)

【问题讨论】:

    标签: java html http server


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      由于您正在尝试创建一个 http 服务器,因此可以查看 here 它解释了如何处理 http 请求和响应。

      【讨论】:

        猜你喜欢
        • 2010-11-09
        • 1970-01-01
        • 2019-10-22
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 2017-08-11
        • 1970-01-01
        相关资源
        最近更新 更多