2017-01-07 5 views
3

Я пытаюсь использовать клиент soap-сервера веб-службы xml в узле, и я не уверен, как добавить заголовок мыла для моего примера.Как добавить заголовок мыла с помощью мыла-мыла или сильного мыла в node.js

Означает сильное мыло, существует метод addSoapHeader(value, qname, options), но я не уверен, что мне нужно передать как qname и опции в этом случае.

Мой запрос, что мне нужно отправить

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://schemas.foo.com/webservices/authentication" xmlns:hot="http://foo.com/webservices/hotelv3" xmlns:hot1="http://schemas.foo.com/webservices/hotelv3"> 
    <soapenv:Header> 
     <aut:AuthenticationHeader> 
     <aut:LoginName>foo</aut:LoginName> 
     <aut:Password>secret</aut:Password> 
     <aut:Culture>en_US</aut:Culture> 
     <aut:Version>7.123</aut:Version> 
     </aut:AuthenticationHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <hot:BookHotelV3> 
     <!--Optional:--> 
     <hot:request> 
      <hot1:RecordLocatorId>0</hot1:RecordLocatorId> 
      <!--Optional:--> 
      <hot1:RoomsInfo> 
       <!--Zero or more repetitions:--> 
       <hot1:RoomReserveInfo> 
        <hot1:RoomId>123</hot1:RoomId> 
        <hot1:ContactPassenger> 
        <hot1:FirstName>Joe</hot1:FirstName> 
        <hot1:LastName>Doe</hot1:LastName> 
        </hot1:ContactPassenger> 
        <hot1:AdultNum>2</hot1:AdultNum> 
        <hot1:ChildNum>0</hot1:ChildNum> 
       </hot1:RoomReserveInfo> 
      </hot1:RoomsInfo> 
      <hot1:PaymentType>Obligo</hot1:PaymentType> 
     </hot:request> 
     </hot:BookHotelV3> 
    </soapenv:Body> 
</soapenv:Envelope> 

Если дорожим быть:

value = { LoginName:'foo', Password:'secret', Culture:'en_US', Version:7.123 } 

Тогда что должно быть QName? auth:AuthenticationHeader? Где указать пространство имен?

Есть ли более простой пример с мылом-мылом? Должен ли я использовать сильное мыло или мыло-мыло?

ответ

4

Я нашел способ сделать это, прочитав код. (сильное мыло)

QName - квалифицированное имя

для простых заголовков

const QName = require('strong-soap').QName; 

client.addSoapHeader({ 
    item: { 
     key: 'api_key', 
     value: apiKey 
    } 
}, new QName(nsURI, 'Auth')); 

для сложных заголовков, как вы должны указать его в XML непосредственно

client.addSoapHeader(
    `<aut:Auth xmlns:aut="${nsURI}"> 
     <aut:LoginName>foo</aut:LoginName> 
    </aut:Auth>` 
);