我正在编写一个 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
是请求内容数据的字节数(而不是字符数),因此,基于以下内容构造此 char 数组的最有效方法是什么?请求的内容长度?
最佳答案
显然,在阅读 POST 正文之前,您没有完全阅读 HTTP header 。因此,内容数组的前两个字符分别是\r 和\n,而正文的最后两个字符不会被读取。
通过读取最后一个 HTTP header 行后的 2 换行符来解决此问题。
关于java - 如何初始化 char 数组以容纳 HTTP POST 内容长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16628124/