Articles of node soap

用Node-soap(node.js)中的数组发送请求

我使用nodejs和node-soap与Web服务进行通信。 但我似乎无法获得将parameter passing给服务的语法。 该文件说,我需要发送一个数组的字段uuid和它的值。 这里是我从Web服务所有者那里得到的PHP代码 $uuid = "xxxx"; $param = array("uuid"=>new SoapVar($uuid, XSD_STRING, "string", "http://www.w3.org/2001/XMLSchema") ) 这里是我在我的节点服务器中使用的代码 function getSoapResponse() { var soap = require('soap'); var url = 'http://live.pagoagil.net/soapserver?wsdl'; var auth = [{'uuid': 'XXXXXXXXX'}]; soap.createClient(url, function(err, client) { client.ListaBancosPSE(auth, function(err, result) { console.log(result); console.log(err); }); }); 有了这个我得到不良的XML错误 var auth = [{'uuid': 'XXXXXXXXX'}]; 要么 var auth = […]

node-soap客户端中的数组字段的名称空间(Node.js)

如何为数组configurationnode-soap客户端集名称空间不仅用于对象? 我的“sendPatient”方法的参数: params = { patientCard: { patient: { firstName: 'test', lastName: 'test' }, identifiers: { code: "123456789", codeType: 1 } } }; client.sendPatient(params, …) 节点肥皂产生: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://xxx/patient/api/" xmlns:bi="http://xxx/base/info/build/"> <soap:Header></soap:Header> <soap:Body> <tns:sendPatient xmlns:tns="http://xxx/patient/api/" xmlns="http://xxx/patient/api/"> <tns:patientCard> <ns1:patient xmlns:ns1="http://xxx/patient/"> <ns1:firstName>test</ns1:firstName> <ns1:lastName>test</ns1:lastName> </ns1:patient> <ns1:identifiers xmlns:ns1="http://xxx/patient/"> <ns1:code>123456789</ns1:code> <ns1:codeType>1</ns1:codeType> </ns1:identifiers> </tns:patientCard> </tns:sendPatient> </soap:Body> </soap:Envelope> 它的工作原理,但我需要发送标识符数组,不仅一个,所以当我把数组 params = { […]

Node-soap client.describe()?

我试图通过使用本地WSDL文件来使用Web服务。 我已经使用了两个WDSL 。 GDSQueue.wsdl GDSQueueAbstract.wsdl 第一个, GDSQueue.wsdl 导入 GDSQueueAbstract.wsdl 。 但在node-soap中,当我使用client.describe() ,它显示如下输出: { GdsQueueService: { GdsQueueCountServicePort: {}, GdsQueueListServicePort: {}, GdsQueuePlaceServicePort: {}, GdsEnterQueueServicePort: {}, GdsExitQueueServicePort: {}, GdsNextOnQueueServicePort: {}, GdsClearQueueServicePort: {}, GdsQueueAgentListServicePort: {} } } 现在来调用服务,我应该使用 GdsQueueService.GdsQueueCountServicePort.service(params , callback) 但是没有任何调用这个Web服务的服务方法 。 因此,我不明白为什么node-soap不会创build服务方法 。

node-soap是否可以在单个WSDL中处理具有不同名称空间的多个模式?

我正在使用node-soap与现有的SOAP API进行接口。 我遇到了多个模式和命名空间的问题,从我正在阅读的内容可能是一个已知的问题。 这里是设置,我用一个WSDL文件和两个模式进行交互: WSDL(为简洁起见删除了属性和元素): <wsdl:definitions xmlns:tns="[rm-nsurl]" targetNamespace="[rm-nsurl]" …> <!– schema1 –> <schema xmlns:tns="[cm-nsurl]" targetNamespace="[cm-nsurl]" …> <complexType abstract="true" name="Operation"> <sequence> <element maxOccurs="1" minOccurs="0" name="operator" type="tns:Operator">…</element> </sequence> </<complexType </schema> <!– schema2 –> <schema xmlns:cm="[cm-nsurl]" xmlns:tns="[rm-nsurl]" targetNamespace="[rm-nsurl]" …> <complexType name="UserListOperation"> <complexContent> <extension base="cm:Operation">…</extension> </complexContent> </complexType> </schema> … </wsdl:definitions> 重要的细节是两个模式将tns定义为不同的值。 当schema2中的一个types引用了schema1( cm:Operation )中的一个元素时,它使用了cm的显式名称空间(目前为止还不错),但是随后跳转到schema1中的引用types中,我们现在看到了tns名称空间和schema1 tns是cm 。 这会导致问题,因为node-soap对于tns使用单个整体值,在这种情况下恰好是rm并且在需要时不显式使用cm命名空间。 这里是我看到问题的一个例子: 请求对象传递给WSDL方法: […]

用X509证书实现WSSecurity npm'Soap'

问题的第一部分: 使用npm的肥皂,我试图做一个肥皂调用下面的端点var url 。 var sslRootCAs = require('ssl-root-cas/latest') sslRootCAs.inject(); var soap = require('soap'); var url = 'https://ws.conf.ebs.health.gov.on.ca:1440/HCVService/HCValidationService?wsdl'; var args = {name: 'value'}; soap.createClient(url, function(err, client) { if (err) { console.log(err); } else console.log(client); }); 我收到callback错误为: { [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' } 上面的错误发生了什么,虽然我有Certs。 问题的第2部分: 我收到了以下信息: ***信息开始 点击WSDL链接: https : //ws.conf.ebs.health.gov.on.ca : […]

节点SOAP如何发送参数/参数与请求

我正在做一个服务的肥皂调用,但无法弄清楚如何正确格式化和发送参数/客户client.method ,我想使用的参数。 client.describe()给了我这个: { SysGestAgentApi: { SysGestAgentApiSoapPort: { EXECSQL: [Object] ….以及更多,但是这个EXECSQL是我想要使用的方法。 此方法将SQL查询作为唯一参数作为string。 我试过的是这样的: var soap = require('soap'); var url = 'http://ipaddress:port/sysgestagentapi/SysGestAgentApi.WSDL'; var args = 'SELECT * FROM _33NWEB'; soap.createClient(url, function(err, client) { client.SysGestAgentApi.SysGestAgentApiSoapPort.EXECSQL(args, function(err, result) { console.log(result.toJSON()); }); }); 它一直在回应一个错误的XML,这是这样的: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>WSDLReader:None of […]

使用node-soap发送正确的soap请求

我正在面对一个非常恼人的问题发送肥皂请求。 如果我使用像SOAP-UI这样的工具,我可以轻松地在XML中构build适当的soap请求。 但是,如果我试图使用节点肥皂发送此肥皂请求我无法得到正确的xmlstring… 我不知道为什么,但node-soap插件将string“SoapIn”附加到方法名称(GetArrBoardWithDetail)。 看下面的代码片段: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://thalesgroup.com/RTTI/2017-02-02/ldb/" xmlns:tok="http://thalesgroup.com/RTTI/2013-11-28/Token/types" xmlns:ct2007="http://thalesgroup.com/RTTI/2007-10-10/ldb/commontypes" xmlns:ct2015="http://thalesgroup.com/RTTI/2015-11-27/ldb/commontypes" xmlns:ldbt2017="http://thalesgroup.com/RTTI/2017-02-02/ldb/types"> <soapenv:Header> <tok:AccessToken> <tok:TokenValue>asdf</tok:TokenValue> </tok:AccessToken> </soapenv:Header> <soapenv:Body> <tns:**GetArrBoardWithDetailsSoapIn**> <tns:numRows>50</tns:numRows> <tns:crs>ACY</tns:crs> <tns:filterCrs></tns:filterCrs> <tns:filterType>to</tns:filterType> <tns:timeOffset>0</tns:timeOffset> <tns:timeWindow>120</tns:timeWindow> </tns:**GetArrBoardWithDetailsSoapIn**> </soapenv:Body> </soapenv:Envelope> 外部工具SoapUI不会附加像“SoapIn”这样的string。 肥皂用户界面附加string“Request”(请参阅​​下面的代码片段)。 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://thalesgroup.com/RTTI/2017-02-02/ldb/" xmlns:tok="http://thalesgroup.com/RTTI/2013-11-28/Token/types" xmlns:ct2007="http://thalesgroup.com/RTTI/2007-10-10/ldb/commontypes" xmlns:ct2015="http://thalesgroup.com/RTTI/2015-11-27/ldb/commontypes" xmlns:ldbt2017="http://thalesgroup.com/RTTI/2017-02-02/ldb/types"> <soapenv:Header> <tok:AccessToken> <tok:TokenValue>asdf</tok:TokenValue> </tok:AccessToken> </soapenv:Header> <soapenv:Body> <tns:**GetArrBoardWithDetailsRequest**> <tns:numRows>50</tns:numRows> <tns:crs>ACY</tns:crs> <tns:filterCrs></tns:filterCrs> <tns:filterType>to</tns:filterType> <tns:timeOffset>0</tns:timeOffset> <tns:timeWindow>120</tns:timeWindow> […]