我正在使用最新的node.js(和express)对返回... XML ... Ugh> _>的网站进行API调用。
我已经浏览了网页并发现了一百万种不同的方式,但我不知道最新的,最新的/最好的方式来发出请求并在node / express中获得响应。
我尝试使用https://github.com/request/request并执行以下操作:
var sendJsonResponse = function(res, status, content) {
res.status(status);
res.json(content);
};
var token = request
.get('some-website.com/api/stuff')
.on('response', function(response) {
console.log(response.statusCode);
console.log(response.headers['content-type']);
});
sendJsonResponse(res, 200, token);
在console.log
语句中,我得到200
,然后是application/xml;charset=utf-8
。
但是在我的页面上,我没有得到我正在寻找的xml。有任何想法吗?我尝试使用https://github.com/Leonidas-from-XIV/node-xml2js尝试“解析”响应,以防节点无法处理xml响应,但无济于事。
var xml2js = require('xml2js');
parser.parseString(response, function(err, result) {
console.dir(result);
console.log('Done');
});
有关使用Node访问API并实际使用XML响应的任何帮助吗?
编辑答案
对于返回的xml内容的Node.js请求和xml解析:
var request = require('request');
var xml2js = require('xml2js');
var sendJsonResponse = function(res, status, content) {
res.status(status);
res.json(content);
};
/* GET XML Content*/
module.exports.dsRequest = function(req, res) {
var parser = new xml2js.Parser();
request('url_for_xml_request', function(error, response, body) {
parser.parseString(body, function(err, result) {
sendJsonResponse(res, 200, result);
});
});
};
答案 0 :(得分:1)
我认为这会有效,因为请求是 async ,您应该写如下:
var sendJsonResponse = function(res, status, content) {
res.status(status);
res.json(content);
};
request.get('http://some-website.com/api/stuff', function (err,response, body) {
sendJsonResponse(res, 200, body);
});