2015-12-29 28 views
0

我使用/ api/authenticate endpoint创建了一个node.js服务。我可以使用'用户名'和'密码'作为输入(主体参数)从POSTMAN成功地调用这项服务。如何从另一个node.js服务器调用相同的服务?在node.js应用程序中发出发布请求

有了邮递员,我得到,

body: {name: 'xxxxxx', password: 'xxxxxx' } 
headers: { 'content-type': 'application/x-www-form-urlencoded', 
    host: 'xx.xx.xx.xx:xxxx', 
    connection: 'close', 
    'content-length': '0' } 

POST/API /认证200 1.336毫秒 - 72

以下是另一个应用程序的NodeJS ......这使得成功的请求呼叫,但没有任何身份参数(用户名和密码)到达认证服务器api时。

var my_http = require('http'); 

app.get('/makeacall', function(req, res) { 
    var output = ''; 
    var options = { 
    body: { name: 'xxxxxx', password: 'xxxxxx' }, 
    method: 'POST', 
    host: 'xx.xx.xx.xx', 
    port: 'xxxx', 
    path: '/api/authenticate', 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
    } 
    }; 

console.log('before request'); 

var req = my_http.request(options, function(response) { 
    console.log('response is: ' + response); 
    console.log('Response status code: ' + response.statusCode); 
    response.on('data', function(chunk) { 
    console.log('Data ..'); 
    output += chunk; 
    }); 
    response.on('end', function(chunk) { 
    console.log('Whole Data ..' + output); 
    }); 

}); 
req.on('error', function(err) { 
    console.log('Error: ' + err); 
}); 
req.end(); 
console.log('444'); 
res.send({ message: 'View record message'}); 

});

从此nodejs应用程序,我得到服务器上的空主体。

body: {} 
headers: { 'content-type': 'application/x-www-form-urlencoded', 
    host: 'xx.xx.xx.xx:xxxx', 
    connection: 'close', 
    'content-length': '0' } 
POST /api/authenticate 200 1.336 ms - 72 

我在想什么?任何帮助表示赞赏。

回答

1

使用的的NodeJS股票HTTP库不允许使用这种语法。

看看RequestJS作为一个更简单的解决方案。它会让你的生活变得轻松许多,并允许你使用你想要的语法。

这是使用库存节点完成它的解决方案。

https://nodejs.org/api/http.html#http_http_request_options_callback

相关配件:

var postData = querystring.stringify({ 
    'msg' : 'Hello World!' 
}); 

,然后在结尾:

// write data to request body 
req.write(postData); 
req.end(); 

但使用库,除非你绝对不能。

1

你想从表单/ etc获取发布的数据吗?

尝试使用快递。

npm install express -save

你可以从与FF的URL发布的数据:

app.post('*', function(request, response){ 
    var post = {}; 
    if(Object.keys(request.body).length){ 
     for(var key in request.body){ 
      post[key] = request.body[key]; 
      console.log(key+'=>'+post[key]; 
     } 
    } 
});