编程语言
首页 > 编程语言> > javascript – 如何在node.js中使用node-soap或strong-soap添加soap标头

javascript – 如何在node.js中使用node-soap或strong-soap添加soap标头

作者:互联网

我正在尝试在节点中使用xml Web服务soap客户端,我不知道如何为我的示例添加soap标头.

看看strong-soap,有一个方法addSoapHeader(value,qname,options)但是我不确定在这种情况下我需要传递什么作为qname和options.

我的要求,我需要发送

<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应该是什么?权威性:AuthenticationHeader?我在哪里指定命名空间?

node-soap有一个更简单的例子吗?我应该使用强力肥皂还是节肥皂?

解决方法:

我通过阅读代码库找到了做到这一点的方法. (强皂)

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>`
);

标签:javascript,soap,web-services,strongloop,node-soap
来源: https://codeday.me/bug/20190608/1198097.html