2017-10-17 4 views
0

私は私が欲しかったものとは全く異なっている次のヘッダーを生成PHPベースのSOAPヘッダどのように特定の形式を生成するには?

$this->__setSoapHeaders(array(
      new SoapHeader('http://xyz.com.au', 'SoapHeaderMsg', array(
       new SoapHeader('http://xyz.com.au', 'IdentityName', 'TEST'), 
       new SoapHeader('http://xyz.com.au', 'AuthenticationToken', 'jkjkjkk') 
      )), 
     )); 

ので、私はこれを生成するには、次のPHPの関数を使用しています

<soapenv:Header> 
    <SoapHeaderMsg xmlns="http://xyz.com.au"> 
     <opt:UserSoapHeader> 
      <opt:IdentityName>TEST</opt:IdentityName> 
      <opt:AuthenticationToken>jjjkjkjkjkjkj</opt:AuthenticationToken> 
     </opt:UserSoapHeader> 
    </SoapHeaderMsg> 
</soapenv:Header> 

、次のSOAPヘッダフォーマットを生成したいです上記?上記のようなPHP関数を使って正確に同じヘッダを生成する方法は?

<SOAP-ENV:Header> 
     <ns1:SoapHeaderMsg> 
      <SOAP-ENC:Struct> 
       <namespace>http://xyz.com.au</namespace> 
       <name>IdentityName</name> 
       <data>TEST</data> 
       <mustUnderstand>false</mustUnderstand> 
      </SOAP-ENC:Struct> 
      <SOAP-ENC:Struct> 
       <namespace>http://xyz.com.au</namespace> 
       <name>AuthenticationToken</name> 
       <data>hjhhjjhjhjhj</data> 
       <mustUnderstand>false</mustUnderstand> 
      </SOAP-ENC:Struct> 
     </ns1:SoapHeaderMsg> 
    </SOAP-ENV:Header> 

答えて

1

arrayStructに変換されるPHP側、に主に使用されます。 objectを試してみてください。成功したかどうか確認してください。

$this->__setSoapHeaders(array(
     new SoapHeader('http://xyz.com.au', 'SoapHeaderMsg', 
      (object)array( 
       'opt:UserSoapHeader' => (object)array(
        'opt:IdentityName' => 'TEST', 
        'opt:AuthenticationToken' => 'jkjkjkk' 
       ) 
     )), 
    )); 

要求は以下のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:ns1="http://test.domain.com/" 
        xmlns:ns2="http://xyz.com.au"> 
     <SOAP-ENV:Header> 
     <ns2:SoapHeaderMsg> 
       <opt:UserSoapHeader> 
        <opt:IdentityName>TEST</opt:IdentityName> 
        <opt:AuthenticationToken>jkjkjkk</opt:AuthenticationToken> 
       </opt:UserSoapHeader> 
     </ns2:SoapHeaderMsg> 
     </SOAP-ENV:Header> 
     <SOAP-ENV:Body> 
      ...... 
     </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
関連する問題