2017-01-07 6 views
3

XML WebサービスSOAPクライアントをノードに使用しようとしていますが、私の例ではSOAPヘッダーを追加する方法がわかりません。node.jsにnode-soapまたはstrong-soapを使用してSOAPヘッダーを追加する方法

強い石鹸を見ると、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>` 
); 
それを指定します
関連する問題