2017-01-07 5 views
3

노드에 XML 웹 서비스 비누 클라이언트를 사용하려고하는데 예제 용 비누 머리글을 추가하는 방법을 모르겠습니다.node-soap 또는 strong-soap 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? 네임 스페이스는 어디에 지정해야합니까?

node-soap을 사용하면 더 쉬운 예가 있습니까? 강한 비누 또는 노드 비누를 사용해야합니까?

답변

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>` 
); 
그것을 지정