我正在尝试对我的应用程序中的远程服务器进行 HTTP 调用
我有一个带有处理实际调用然后将 xml 转换为 json 的函数的包
myPackage = {
baseUrl: "http://12.34.56.78:8080/api",
getBatchList: function() {
var url = this.baseUrl + "/batchList.xml";
HTTP.get(url, {auth: "user:pass"}, function(err, res) {
if (!err) {
console.log(res);
xml2js.parseStringSync(res.content, function(error, result){
if (!error) {
console.log(result); //the result is displayed
return result;
};
});
};
});
}
}
然后我在服务器上声明了一个 Meteor.method,因此我可以从客户端调用该函数,因为 myPackage 仅在服务器上可用(它必须是,因为它对域外部进行 http 调用,而我无法从客户端执行)。
if (Meteor.isServer) {
Meteor.methods({
getBatchList: function() {
myPackage.getBatchList(function(error, result) {
if (!error && result) {
console.log(result); //nothing is logged to the console
return result;
};
});
}
})
}
但是,由于某种原因,结果似乎没有传递到getBatchList
方法中,我怀疑这是我的回调结构方式有问题(我不知道);
最后在客户端调用该方法
if (Meteor.isClient) {
Template.hello.events({
'click input' : function () {
Meteor.call("getBatchList", function(error, result) {
if (result && !error) {
console.log(result);
} else {
console.log("nothing returned!!!");
};
});
}
});
}
这也不会从服务器获得任何结果,没有错误或结果。
任何帮助,将不胜感激。
谢谢。