您如何直接使用Java套接字发送503错误页面

问题描述 投票:0回答:2

我正在尝试用Java构建简单的服务器。

到目前为止,我基本上只剩下在端口上监听的ServerSocket。运行良好。我想实现服务器响应请求的能力。首先,我想用503答复错误的请求。

我这样做的最好主意是使用BufferedWriter做类似的事情

...
 out.write("HTTP/1.0 503 Bad Request\r\n");
 out.write("Date: Mon, 23 Jun 2014 23:59:59 GMT\r\n");
 out.write("Server: Apache/1.3.2\r\n");
...

然而,这似乎很容易出错。另外,我看过Apache的HttpComponents examples,它们具有HttpResponses的内置类,但是使用它们非常复杂,并且涉及围绕它们构建的整个基础结构。

有人对如何在Java中简单地返回HttpResponse有任何建议吗?

java sockets httpresponse apache-httpcomponents
2个回答
0
投票

除非客户端和服务器双方都同意在双方实现HTTP协议,否则从普通服务器套接字向客户端发送503并不是一个好主意。

处理普通套接字连接时,您正在网络堆栈的TCP层上工作。在TCP层使用应用程序逻辑不是一个好主意,因此存在诸如HTTP之类的应用程序层协议。

并且除非没有真正的需要编写诸如HTTP这样的协议的全新实现,否则不要这样做。尝试使用现有的实现,例如Java中的Servlet。

希望有帮助。


-1
投票

HTTP标头以双\ r \ n结尾,因此在您的最后一个标头字段之后,添加第二个\ r \ n。

© www.soinside.com 2019 - 2024. All rights reserved.