[英]node.js http.request for json, undefined in front of the json
我正在嘗試通過node.js從embed.ly獲取數據。
一切看起來都不錯,但是它在數據前放置了“ undefined”:
也許與setEncoding('utf8)有關?
結果看起來像這樣:
undefined[{ validjson }]
功能:
function loadDataFromEmbedLy( params, queue ){
try {
var body;
var options = {
host: 'api.embed.ly',
port: 80,
path: '/1/oembed?wmode=opaque&key=key&urls='+params,
method: 'GET',
headers: {'user-agent': ''}
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('end', function() {
if( typeof body != 'undefined' ){
console.log( body );
}
});
res.on('data', function ( chunk ) {
if( typeof chunk != 'undefined' ){
body += chunk;
}
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
} catch(e) { console.log("error " + e); }
}
這是因為body
最初是未定義的。 當使用+=
附加到它時,它將附加到字符串“ undefined”。 我希望這是有道理的。
解決方案:將body
聲明為空字符串: var body = "";
第二:我真的建議您查看Mikeal Rogers的請求 。
編輯:請求比基本的HTTP api容易一些。 你的例子:
function loadDataFromEmbedLy (params) {
var options = {
url: 'http://api.embed.ly/1/oembed',
qs: {
wmode: 'opaque',
urls: params
},
json: true
};
request(options, function (err, res, body) {
console.log(body);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.