SOAP / AXL请求到CUCM失败,Node.js

所有,

感谢您抽出时间检查这个问题。 任何帮助表示赞赏,因为我是一个初学者。

我正在尝试使用Node.js将SOAP / AXL呼叫转移到v11.5 Cisco Callmanager。 我已经从这个人的博客复制代码有一个非常真棒解释: http : //blog.darrenparkinson.uk/2014/04/accessing-cisco-administrative-xml-axl.html

我已经validation用户具有AXL权限,并且在CAllmanager上启用了AXL服务。 我能够成功地运行相同的SOAP / AXL调用使用相同的凭据使用SoapUI相同的Callmanager成功。

但是,当我运行这个我得到一个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">' +

Interesting Posts