2016-11-01 2 views
0

Ich möchte einen POST-Aufruf an meine REST API auf einem anderen Port in meinem PC. Die http.get-Methode funktioniert einwandfrei, aber wenn ich eine POST-Anfrage mache, gibt der Server keine Antwort oder irgendeinen Fehler beim Rückruf zurück. Hier ist mein Code:http.Request Post-Methode reagiert nicht mit keinen Fehler beim Rückruf

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); 
     }); 
    }); 

} 
}); 
+0

sind nicht sicher, warum (noch) nicht, aber ich würde auf h2o2 Plugin empfehlen, ich: https://github.com/hapijs/ h2o2 Es ist als Proxy-Handler für hapi.js gemeint und sollte genau das sein, was Sie brauchen (siehe die US Altersabschnitt) – tgo

+0

Das Hapi-Ökosystem schlägt [Wrack] (https://github.com/hapijs/wreck) vor, um HTTP-Anfragen zu behandeln. Was jedoch für das Debugging interessant ist, ist der Code, der durch den Aufruf von '/ apipath: 2000' ausgeführt wird. –

Antwort

0

Sie sind nicht in der Lage einen Fehler oder eine Antwort zu sehen, weil Sie Ihre Antwort streamen und endet die Anfrage innerhalb der http.request(), wo, wie es so sein sollte ...

... 
... 
... 

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(); 

... 
... 

Wie gesagt in Kommentaren, die Sie für die Herstellung von hTTP-Anfrage in hapi andere Module haben