Node.js在http上发布请求未完成

时间:2016-05-15 02:57:23

标签: node.js http

在node.js中我使用http请求模块发出此请求

var post_req = http.request({
    host: 'api.site1.ciscozeus.io',
    path: '/logs/' + ZUES_TOKEN + '/' + logName + '/',
    port: 80,
    method: 'POST',
    headers: {
        'Content-type' : 'application/x-www-form-urlencoded'
    }
}, function(res) {
    res.on('data', function (chunk) {
        console.log(1);
        cb(chunk);
    });
});
post_req.write(JSON.stringify({
    "logs" : JSON.stringify('[{"test":"value1"}]')
}));
post_req.on('error', function(e) {
    console.error(e);
});
post_req.end();

但我的问题是它似乎没有进入cb(chunk);。就像它没有调用最终承诺函数一样。它没有打印console.log(1)。

api有一个测试网站试试看,如果我在那里尝试,它就可以了。以下是当我在该工具中工作时检查日志数据时的外观:

enter image description here enter image description here

有没有人知道我是否错误地附加了日志数据?我不想发布相同的数据。

由于

1 个答案:

答案 0 :(得分:0)

post_req.write(JSON.stringify({
    "logs" : JSON.stringify('[{"test":"value1"}]')
}));

在代码的上述部分中,内部JSON.stringify不正确。你应该写'logs' : [{'test' : 'value1'}]。外部JSON.stringify将负责将整个JSON object转换为string