我正在编写一个简单的Java Web服务器来帮助我理解这个机制。但似乎它不起作用。它会打印请求,但我无法在浏览器或telnet客户端上获得任何响应。你能帮忙解释为什么没有回应吗?
completion:^(BOOL finished){
NSLog(@"%@", questionsArray);
[self.resultsTable reloadData];
}];
答案 0 :(得分:1)
您还需要在标题中提供Content-Type
和Content-Length
个参数。
同样在HTTP中,您应该使用\r\n
终止行,并使用\r\n\r\n
终止标题。
E.g:
bwriter.write("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 3\r\n\r\nABC");
答案 1 :(得分:0)
while( (line = buf.readLine()) != null ) {
当遇到流的末尾时,此循环将退出。
尚未遇到流的结尾!浏览器在等待服务器响应时刚刚停止发送数据。
空白行(我认为)是HTTP请求结束的信号。这样,HTTP / 1.1客户端可以向同一服务器发送其他请求(在收到第一个响应之后),而无需打开新连接的开销。
(您的服务器将发送响应,但仅在您的客户端终止连接之后,这可能有点太晚了。)
编辑你的while循环所需要的是(对于初学者):
if (line.isEmpty()) {
break;
}
但是,整个HTTP协议确实需要实现。这是您已经开展的一个重要的学习项目。享受!