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

时间:2014-06-22 23:42:11

标签: java apache sockets httpresponse apache-httpcomponents

我正在尝试用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的内置类,但是使用它们非常复杂,需要围绕它们构建整个基础架构。 / p>

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

2 个答案:

答案 0 :(得分:0)

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

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

除非没有真正需要编写HTTP等协议的新实现,否则不要这样做。尝试使用现有的实现,例如java中的Servlets。

希望它有所帮助。

答案 1 :(得分:-1)

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