http.request post方法没有响应,回调没有错误

时间:2016-11-01 15:09:56

标签: node.js http-post httprequest hapijs

我想对我的电脑中另一个端口上运行的REST API进行POST调用。 http.get方法工作正常,但是当我发出POST请求时,服务器在回调中没有返回任何响应或任何错误。这是我的代码:

server.route({
method:'POST',
path:'/path1',
handler: function(req, res){
    var post_data = querystring.stringify({
        'name': 'asd',
        'price': '123'
    });
    var options = {
        host: '127.0.0.1',
        port: 2000,
        path: '/apipath',
        method:'POST',
        header:{
            'Content-Type':'application/json',
            'Content-Length': Buffer.byteLength(post_data)
        }
    };


     var post_req = http.request(options, function(reply){
            console.log('222');
            reply.setEncoding('utf8');
            reply.on('data', function (body) {
                console.log('Body: ' + body);
        });
        post_req.write(post_data);
        post_req.end();
        res(reply);
        post_req.on('error', function(e) {
        console.error(e);
        });
    });

}
});

1 个答案:

答案 0 :(得分:0)

您无法看到任何错误或响应,因为您正在传输响应并在http.request()中结束请求,因为它应该像这样...

...
...
...

var post_req = http.request(options, function(reply){
    console.log('222');
    reply.setEncoding('utf8');
    reply.on('data', function (body) {
        console.log('Body: ' + body);
    });            
});

post_req.on('error', function(e) {
    console.error(e);
});

post_req.write(post_data);
post_req.end();

...
... 

正如评论中所说,你有其他模块用于在hapi中发出http请求