0

我正在编写一个 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 数组的最有效方法是什么?

4

1 回答 1

2

显然,在阅读 POST 正文之前,您并没有完全阅读 HTTP 标头。因此,您的内容数组的前两个字符分别是 \r 和 \n 并且正文的最后两个字符不会被读取。

通过在最后一个 HTTP 标头行之后读取2 个换行符来解决此问题。

于 2013-05-18T19:28:56.930 回答