我正在尝试用Java创建一个非常基本的HTTP服务器,它所要做的就是处理GET请求并适当地回复。
我正在尝试做这样的事情:
据我了解,所有HTTP GET请求标头均以“ \ r \ n \ r \ n”结尾,因此我认为我可以简单地在字符串中搜索此字符组合,如果找到它,则应表示完整的请求标头已经发送。我正在使用下面的代码尝试执行此操作,但是不幸的是,我似乎找不到上述组合。我是否以为应该找到这种结合是错误的?
int bytesRead = 0;
String request = "";
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
while ((bytesRead = in.read(buffer)) != -1){
request += new String(buffer).trim();
buffer = new byte[BUFSIZE];
if (request.contains("\r\n\r\n")) {
handleRequest(request);
request = "";
}
}
Run Code Online (Sandbox Code Playgroud)
我发现使用\ r \ n \ r \ n检测到HTTP标头的结尾,并且根据那里的答案,我应该能够以这种方式检测标头的结尾,但是当我搜索浏览器发出的请求时,找不到“ \ r \ n \ r \ n”组合。以下是Chrome发出的请求:
GET / HTTP/1.1
Host: localhost:8888
Connection: …Run Code Online (Sandbox Code Playgroud)