2011-03-10 20 views
0

PHP Adonix X3 WebサービスをPHPクライアントを使用して呼び出そうとしています。PHP:SOAPヘッダー要素のサブノードが見つかりません。

テストではSOAP UIを使用していましたが、うまくいきました。これは、XMLリクエストです:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:a="http://www.adonix.com/WSS" 
    xmlns:XS="http://www.w3.org/2001/XMLSchema" 
    xmlns:XI="http://www.w3.org/2001/XMLSchema-instance"> 
    <S:Header> 
    <a:CAdxCallingContext> 
     <a:codeLang XI:type="XS:string">FRA</a:codeLang> 
     <a:codeUser XI:type="XS:string">ADM</a:codeUser> 
     <a:password XI:type="XS:string">XXX</a:password> 
     <a:poolAlias XI:type="XS:string">TEST</a:poolAlias> 
     <a:requestConfig XI:type="XS:string">trace</a:requestConfig> 
    </a:CAdxCallingContext> 
    </S:Header> 
    <S:Body> 
     <a:runXml S:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <publicName XI:type="XS:string">RECH_OF</publicName> 
     <inputXml XI:type="XS:string"> 
<![CDATA[ 
<PARAM> 
<GRP ID="GRP1"> 
<FLD NAME="XITMREF">PSFIN00153</FLD> 
<FLD NAME="XFLUX">recycle</FLD> 
<FLD NAME="XOPENUM">15</FLD> 
</GRP> 
</PARAM> 
]]> 
</inputXml> 
     </a:runXml> 
    </S:Body> 
</S:Envelope> 

が、PHPで同じ呼び出しをやろうとしている。

$sh_param = array(
        'codeLang' => 'FRA', 
        'codeUser' => 'ADM', 
        'password' => 'XXX', 
        'poolAlias' => 'TEST', 
        'requestConfig ' => 'trace' 
        ); 


$ns = 'http://www.adonix.com/WSS'; 


$headers = new SoapHeader($ns, 'CAdxCallingContext', $sh_param, false); 

// Prepare Soap Client 
$soapClient->__setSoapHeaders(array($headers)); 

$at_param2 = array(
          'XITMREF'  => 'PSFIN00153', 
          'XFLUX'  => 'recycle', 
          'XOPENUM'  => '15'); 


// Setup the RemoteFunction parameters 
$ap_param = array(
        'publicName'  => 'RECH_OF', 
        'inputXml'  => array($at_param2)); 


$info = $soapClient->__call("runXml", array($ap_param)); 

は、私は次のエラーを取得する:

3 - Le Header element [http://www.adonix.com/WSS][CAdxCallingContext] du message Soap n'a pas de fils [codeLang]. 

これは

The Header element [http://www.adonix.com/WSS][CAdxCallingContext] of the Soap message has no son [codeLang] 
を意味し、

これは、サーバーは、ヘッダーのサブノード...

何か考えていますか?あなたが抱えている問題は、X3のWebサービスは、名前空間の参照また

なしヘッダパラメータを識別することができないので、あなたが構築する代わりに、基本的な配列のSoapVarを使用すべきである

おかげ

答えて

2

正しいヘッダ

だから、この

$ns = 'http://www.adonix.com/WSS'; 
$headerParams = array('ns1:codeLang'  => 'FRA', 
         'ns1:codeUser'  => 'ADM', 
         'ns1:password'  => 'XXX', 
         'ns1:poolAlias'  => 'TEST', 
         'ns1:requestConfig' => 'trace'); 
$soapStruct = new SoapVar($headerParams, SOAP_ENC_OBJECT); 
$header  = new SoapHeader($ns, 'CAdxCallingContext', $soapStruct, false); 

グッドラックのようなものを試してみてください

A1。

関連する問題