2016-11-01 80 views
0

我想對我的電腦中另一個端口上運行的REST API進行POST調用。 http.get方法工作正常,但是當我發出一個POST請求時,服務器返回任何響應或回調中的任何錯誤。這裏是我的代碼:http.request 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); 
     }); 
    }); 

} 
}); 
+0

我不知道爲什麼(還),但我會建議看H2O2插件:https://github.com/hapijs/ h2o2 它意味着作爲hapi.js的代理處理程序,並且應該正是您所需要的(請參閱我們年齡部分) – tgo

+0

Hapi生態系統建議[Wreck](https://github.com/hapijs/wreck)處理HTTP請求。但是,調試有趣的是通過調用'/ apipath:2000'執行的代碼。 –

回答

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

... 
... 

正如評論說你作出的HTTP請求高致病性禽流感等模塊