我正在尝试用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
提出任何建议?
答案 0 :(得分:0)
除非客户端和服务器都同意在双方都实施HTTP协议,否则从普通服务器套接字向客户端发送503并不是一个好主意。
处理普通套接字连接时,您正在处理网络堆栈的TCP层。在TCP层使用应用程序逻辑不是一个好主意,因此存在应用程序层协议,如HTTP。
除非没有真正需要编写HTTP等协议的新实现,否则不要这样做。尝试使用现有的实现,例如java中的Servlets。
希望它有所帮助。
答案 1 :(得分:-1)
HTTP标头以双\ r \ n结尾,因此在您的最后一个标题字段后添加第二个\ r \ n。