SOAP/AXL 对 CUCM 的请求失败 Node.js
SOAP/AXL Request to CUCM Fails with Node.js
全部,
感谢您抽出宝贵时间查看此问题。感谢任何帮助,因为我是初学者。
我正在尝试与 Node.js 合作,向 v11.5 Cisco Callmanager 发出 SOAP/AXL 呼叫。我从这个人的博客中复制了代码,其中有一个非常棒的解释:http://blog.darrenparkinson.uk/2014/04/accessing-cisco-administrative-xml-axl.html
我已验证用户具有 AXL 权限,并且在 CAllmanager 上启用了 AXL 服务。我能够使用 SoapUI 成功地 运行 对具有相同凭据的相同 Callmanager 进行相同的 SOAP/AXL 调用。
但是,当我 运行 这样做时,我收到了一个 http.599 错误。我有一种奇怪的感觉,它与安全性有关,但我不能确定它。
这是我的代码。
var https = require("https");
var authentication = 'username:password';
var headers = {
'SoapAction':'CUCM:DB ver=11.5',
'Authorization': 'Basic ' + new Buffer(authentication).toString('base64'),
'Content-Type': 'text/xml; charset=utf-8'
}
var soapBody = new Buffer('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:axl="http://www.cisco.com/AXL/API/11.5">' +
'<soapenv:Header/>' +
'<soapenv:Body>' +
'<ns:listCss sequence="?">' +
'<searchCriteria>' +
'<name>%</name>' +
'</searchCriteria>' +
'<returnedTags uuid="?">' +
'<name>?</name>' +
'<description>?</description>' +
'<clause>?</clause>' +
'</returnedTags>' +
'</ns:listCss>' +
'</soapenv:Body>' +
'</soapenv:Envelope>');
var options = {
host: '192.168.204.10', // The IP Address of the Communications Manager Server
port: 8443, // Clearly port 443 for SSL -- I think it's the default so could be removed
path: '/axl/', // This is the URL for accessing axl on the server
method: 'POST', // AXL Requires POST messages
headers: headers, // using the headers we specified earlier
rejectUnauthorized: false // required to accept self-signed certificate
};
// Doesn't seem to need this line, but it might be useful anyway for pooling?
options.agent = new https.Agent(options);
var req = https.request(options, function(res) {
console.log("status code = ", res.statusCode);
console.log("headers = " , res.headers);
res.setEncoding('utf8');
res.on('data', function(d) {
console.log("Got Data: " + d);
});
});
req.write(soapBody);
req.end();
req.on('error', function(e) {
console.error(e);
});
通过进行以下两项更改,我能够使您的代码正常工作:
第 5 行,AXL 对 SOAPAction 值的格式很挑剔:
'SOAPAction':'"CUCM:DB ver=11.5 listCss"',
第10行,信封('axl')中定义的XML命名空间与请求('ns')中使用的命名空间不一致
var soapBody = new Buffer('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/11.5">' +
全部,
感谢您抽出宝贵时间查看此问题。感谢任何帮助,因为我是初学者。
我正在尝试与 Node.js 合作,向 v11.5 Cisco Callmanager 发出 SOAP/AXL 呼叫。我从这个人的博客中复制了代码,其中有一个非常棒的解释:http://blog.darrenparkinson.uk/2014/04/accessing-cisco-administrative-xml-axl.html
我已验证用户具有 AXL 权限,并且在 CAllmanager 上启用了 AXL 服务。我能够使用 SoapUI 成功地 运行 对具有相同凭据的相同 Callmanager 进行相同的 SOAP/AXL 调用。
但是,当我 运行 这样做时,我收到了一个 http.599 错误。我有一种奇怪的感觉,它与安全性有关,但我不能确定它。
这是我的代码。
var https = require("https");
var authentication = 'username:password';
var headers = {
'SoapAction':'CUCM:DB ver=11.5',
'Authorization': 'Basic ' + new Buffer(authentication).toString('base64'),
'Content-Type': 'text/xml; charset=utf-8'
}
var soapBody = new Buffer('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:axl="http://www.cisco.com/AXL/API/11.5">' +
'<soapenv:Header/>' +
'<soapenv:Body>' +
'<ns:listCss sequence="?">' +
'<searchCriteria>' +
'<name>%</name>' +
'</searchCriteria>' +
'<returnedTags uuid="?">' +
'<name>?</name>' +
'<description>?</description>' +
'<clause>?</clause>' +
'</returnedTags>' +
'</ns:listCss>' +
'</soapenv:Body>' +
'</soapenv:Envelope>');
var options = {
host: '192.168.204.10', // The IP Address of the Communications Manager Server
port: 8443, // Clearly port 443 for SSL -- I think it's the default so could be removed
path: '/axl/', // This is the URL for accessing axl on the server
method: 'POST', // AXL Requires POST messages
headers: headers, // using the headers we specified earlier
rejectUnauthorized: false // required to accept self-signed certificate
};
// Doesn't seem to need this line, but it might be useful anyway for pooling?
options.agent = new https.Agent(options);
var req = https.request(options, function(res) {
console.log("status code = ", res.statusCode);
console.log("headers = " , res.headers);
res.setEncoding('utf8');
res.on('data', function(d) {
console.log("Got Data: " + d);
});
});
req.write(soapBody);
req.end();
req.on('error', function(e) {
console.error(e);
});
通过进行以下两项更改,我能够使您的代码正常工作:
第 5 行,AXL 对 SOAPAction 值的格式很挑剔:
'SOAPAction':'"CUCM:DB ver=11.5 listCss"',
第10行,信封('axl')中定义的XML命名空间与请求('ns')中使用的命名空间不一致
var soapBody = new Buffer('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/11.5">' +