我正在使用部署在IBM Bluemix上的node.js应用程序strong-soap(node-soap的分支)。通过加载本地wsdl文件创建soap客户端soap.createClient
,它在我们的开发人员本地计算机上都能正常工作。但是,当项目部署到Bluemix时,将创建客户端而不提供任何服务。在soap.createClient
创建客户端期间没有发生错误,但client.describe()
为空{}
,并且无法调用任何服务或方法。
我已检查wsdl是否已找到并正确加载,fs.existsSync
表示该文件存在。
我已尝试在Bluemix上实时调试应用程序并逐步执行代码,不会抛出任何错误,但客户端没有任何操作。我很难过,有人可以帮忙吗?
日志文件只有一个错误:SOAP service was not correctly initialized in the client.
,它是从下面的代码返回的。 Stenaline
是来自wsdl的服务名称,因此我的localmachine client.Stenaline
设置正确,可以在其上调用操作。
完整的连接功能
var soapClient = null;
var connect = function (create_callback) {
var options = {
endpoint: config.endpoint
};
var wsdl = './src/config/contract/www.stenaline.com.sloop.ws.2014.10.wsdl';
if (!fs.existsSync(wsdl)) {
let err = new Error('Failed to locate SOAP wsdl file.');
err.path = wsdl;
return process.nextTick(function () {
create_callback(err);
});
}
soap.createClient(wsdl, options, function (err, client) {
if (err) return create_callback(err);
client.setSecurity(wsSecurity);
soapClient = client;
debug('client', client.describe());
if (!client.Stenaline) {
let err = new Error('SOAP service was not correctly initialized in the client.');
return process.nextTick(function () {
create_callback(err);
});
}
create_callback(null, client);
});
};
答案 0 :(得分:0)
这看起来像是强肥皂中的一个错误。
切换到使用https://github.com/vpulim/node-soap中的node-soap并解决问题。
答案 1 :(得分:0)
在AWS Lambda上使用strong-soap时遇到同样的问题,这也是通过交换node-soap
解决的