2017-10-17 3 views
0

Je voulais générer le format d'en-tête SOAP suivante,En-têtes SOAP PHP comment générer un format spécifique?

<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> 

donc je suis en utilisant les fonctions php suivantes pour générer ce,

$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') 
      )), 
     )); 

qui génère en-têtes suivants qui est complètement différent de ce que je voulais au dessus ? comment puis-je générer exactement les mêmes en-têtes en utilisant les fonctions PHP comme ci-dessus?

<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> 

Répondre

1

array est principalement utilisé sur le côté PHP, qui est converti en Struct. Pouvez-vous s'il vous plaît essayer d'utiliser object et voir si vous avez un succès avec elle.

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

La demande ressemble ci-dessous:

<?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>