如何从nodeJS向外部发送数据?

时间:2016-06-23 14:32:45

标签: node.js httprequest

我需要将数据从NodeJS服务器发送到外部服务器。我已经尝试了很多代码并搜索了这么多,但没有得到任何正确的工作示例或者它在我的情况下不起作用。

这是我的代码:

app.get('/getFrom', function (req, res) {
var request = require('request');

        // Try 1 - Fail
        /*var options = {
        url: 'http://example.com/synch.php',
        'method': 'POST',
         'body': {"nodeParam":"working"} 

        };
        request(options, callback);
        */

        // Try 2 - Fail
        /*  request({
            // HTTP Archive Request Object 
            har: {
              url: 'http://example.com/synch.php',
              method: 'POST',
              postData: {
                params: [
                  {
                    nodeParam: 'working'
                  }
                ]
              }
            }
          },callback)*/

    function callback(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log("body " + body); // Show the HTML for the Google homepage.
                res.send(body);
        }
        else{
            console.log("Error " + error);
            res.send(error);
        }
    }

/ * ------ HTTP ------ * /

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

// try 3  - Fail
/*var optionsHTTP = {
  hostname: 'http://example.com',
  port: 80,
  path: '/synch.php',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': Buffer.byteLength(postData)
  }
};

var req1 = http.request(optionsHTTP, function(res1){
  console.log('STATUS: ' + res1.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res1.headers));
  res1.setEncoding('utf8');
  res1.on('data', function(chunk){
    console.log('BODY: ' + chunk);
  });
  res1.on('end', function(){
    console.log('No more data in response.')
  })
});

req1.on('error',function(e){
  console.log('problem with request:' + e.message);
});

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

/ * ------ / HTTP ------ * /

请告诉我错误的地方

2 个答案:

答案 0 :(得分:0)

不确定为什么您的请求可能会失败,但这是在npm中使用request模块的一个简单而直接的示例:

var request = require('request');

var postData = {
	name: 'test123'
}

request({
	url: 'http://jsonplaceholder.typicode.com/posts',
	method: 'POST',
	data: JSON.stringify(postData)
}, function(err, response) {
	if (err) {
		return console.error(err);
	};

	console.log(JSON.stringify(response));
})

此代码段向rest API发出请求并在控制台上显示结果。响应数据位于response.body属性中。

答案 1 :(得分:0)

我找到了一个经过实践检验的解决方案:



    request({
        url: 'http://example.com/synch.php', //URL to hit
        qs: {nodeParam: 'blog example', xml: xmlData}, //Query string data
        method: 'POST', //Specify the method
    },callback);