我正在尝试用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
有任何建议吗?
除非客户端和服务器双方都同意在双方实现HTTP协议,否则从普通服务器套接字向客户端发送503并不是一个好主意。
处理普通套接字连接时,您正在网络堆栈的TCP层上工作。在TCP层使用应用程序逻辑不是一个好主意,因此存在诸如HTTP之类的应用程序层协议。
并且除非没有真正的需要编写诸如HTTP这样的协议的全新实现,否则不要这样做。尝试使用现有的实现,例如Java中的Servlet。
希望有帮助。
HTTP标头以双\ r \ n结尾,因此在您的最后一个标头字段之后,添加第二个\ r \ n。