自己写一个脚本枉自己写的exprss的服务器发post请求,老是出错,后来发现是Content-Length的问题。
刚开始是这样写的: var headers = { 'Content-Type’: 'application/json’, 'Content-Length’: sentString.length }; 中文的怎么都不行老是报json转换异常,英文就可以。 后来用下面的代码测试才知道原来string长度不等于buf的长度啊。
var str = JSON.stringify({words:'测试1234567890中文'});
console.log(str.length);
console.log(new Buffer(str).length);
打印结果如下:
26
34
自己果然是个小菜鸟!希望新手遇到这个问题的时候注意吧。 贴一下小脚本吧
var index = function()
{
var str = new Buffer(JSON.stringify({words:'我的测试'}));
var headers = {
'Content-Type': 'application/json',
'Content-Length': str.length
};
console.log(str);
var options = {
host: 'localhost',
path: '/segment',
port: 3000,
method: 'POST',
headers: headers
};
var request = http.request(options, function(response)
{
response.setEncoding('utf8');
var buf = [];
var size =0;
response.on('data', function (chunk)
{
var buftmp = new Buffer(chunk);
buf.push(buftmp);
size += buftmp.length;
}).on('end', function ()
{
console.log(Buffer.concat(buf,size).toString());
}).on('error', function (error)
{
console.log(error.message);
}).on('aborted', function()
{
console.log('aborted');
});
});
request.write(str);
request.end();
}
5 回复