我正在编写HTTP服务器(用于学习目的)。一旦收到HTTP POST请求,我想打印客户端发送的参数,问题是我发送的是“name = Marcelo”,结果不完整。
Content length: 12
char 0:
char 1:
char 2: n
char 3: a
char 4: m
char 5: e
char 6: =
char 7: M
char 8: a
char 9: r
char 10: c
char 11: e
这是代码(带Java的JS,即Nashorn):
//Initialize an array of characters
var content = new CharArray(contentLength);
print('Content length: ' + content.length);
bufReader.read(content);
for(var c in content) {
print('char ' + c + ': ' + content[c]);
}
我理解Content-Length
是请求内容数据的字节数(不是字符数),那么,基于请求的Content-Length构造这个char数组的最有效方法是什么?
答案 0 :(得分:2)
显然,在阅读POST正文之前,你并没有完全阅读HTTP标题。因此,内容数组的前两个字符分别是\ r和\ n,并且不会读取正文的最后两个字符。
通过在最后一个HTTP标题行后读取 2 换行符来解决此问题。