2015-09-16 40 views
3

我試圖在node.js中使用thisthis WSDL與node-soap定義的SOAP WebService。現在Node-soap XML語法

,關於singlewsdl規範的這一部分:

<xs:element minOccurs="0" name="AuthToken" nillable="true" type="xs:string"/> 
<xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="NIP" nillable="true" type="q1:ArrayOfstring"/> 
... 
<xs:element minOccurs="0" name="DateFrom" nillable="true" type="xs:dateTime"/> 

我沒有問題,查詢與包含authToken或DateFrom參數的服務:

var args = { 
    AuthToken: 'yyyy', 
    DateFrom: (ISOstringed date variable) 
}; 

但我不知道如何語法對於「ArrayOf ...」參數應該看起來像。我已經試過:

NIP: 'xxxx' 
NIP: { 
    element: 'xxxx' 
} 
NIP: { 
    string: 'xxxx' 
} 

,但只有第一個產生一個反序列化的錯誤,前者只產生超時(這是相同的隨機變量)。

任何幫助,將不勝感激。

回答

3

SoapUI幫助我理解這一點:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:GetData> 
     <tem:AuthToken>xxxx</tem:AuthToken> 
     <tem:NIP> 
      <arr:string>yyyy</arr:string> 
      <arr:string>zzzz</arr:string> 
     </tem:NIP> 
     </tem:GetData> 
    </soapenv:Body> 
</soapenv:Envelope> 

是所需的XML請求的格式,讓我去,使之儘可能接近:

var args = { 
    attributes: { 
     'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' 
    }, 
    'tns:AuthToken': 'xxxx', 
    'tns:NIP': { 
     'arr:string': ['yyyy','zzzz'] 
    }, 
}; 

作爲評論的一個字 - node-soap默認將http://tempuri.org/命名空間定義爲'tns',所以我跳過了SoapUI建議的'tem'定義。