2016-06-01 18 views
1

PHPで開発されたプロジェクトでWebサービスの機能を呼び出したいと思います。これは私のコードです:SOAP WebサービスとそのXMLでの作業方法

$wsdl="http://x.x.x.x:8090/charge/services/Amount?wsdl"; 

$client = new SoapClient($wsdl) or die("Error"); 

$chargeAmountArray = array('UserIdentifier' => $number , 
          'data' => array(
          'description' => array("Channel=test|".$Origin), 
          'currency' => NULL, 
          'code' => $code), 
          'refrence' => $refcode); 

$header = new SoapHeader('servicekey', $servicekey); 

$client->__setSoapHeaders($header); 

$res = $client->__call('chargeAmount',$chargeAmountArray); 

return $res->return; 

私はtcpdumpのと私のXMLコードを見ていると、それはのようなものです:あなたがUserIdentifierが渡され、refrenceパラメータがXMLに名前がありませんされていない見たよう

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.csapi.org/schema/parlayx/payment/amount_charging/v4_0/local" xmlns:ns2="servicekey"> 
    <SOAP-ENV:Header> 
     <ns2:e0ce5ed56d7c4d60/> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <ns1:chargeAmount/> 
     <param1> 
      <item> 
       <key>description</key> 
       <value>yChannel=test|30733</value> 
      </item> 
      <item> 
       <key>currency</key> 
       <value/> 
      </item> 
      <item> 
       <key>code</key> 
       <value>MOBDY</value> 
      </item> 
     </param1> 
     <param2>1PN1mROoZop2hAy</param2> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

答えて

0

ここにいくつかのエラーがあります。

constructor signature for the SoapHeader classは、最初のパラメータが名前空間宣言であることを示しています。これは設定していないと表示されます。

また、SoapClient::__call() is deprecated;代わりに、あなたは直接メソッドを呼び出す必要があります。

$res = $client->chargeAmount($chargeAmountArray); 

SoapClient::__call()は、あなたが提供されていないキー「パラメータ」、と、アレイ内のパラメータを期待しています。

最後に、何らかの理由で接続できない場合は、try/catchでエラーチェックを行う必要があります。

+0

この文の意味を理解できませんでした:SoapHeaderクラスのコンストラクタシグネチャは、最初のパラメータが名前空間宣言であることを示しています。私は 'nusoap'を使っているので' SoapClient :: __ call() 'を使っています。また、 '$ res = $ client - > __ call( 'chargeAmount'、array( 'parameters' => $ chargeAmountArray));という方法で' try/catch'とコール関数を使用しました。 '致命的なエラー:Uncaught SoapFault例外:[soapenv:Server] unknown' – hodhod

+0

コンストラクタは' new SoapHeader() 'を使うときに呼び出される関数です。あなたはそれを間違って呼んでいる。 'SoapClient__call()'は使わないでください。非推奨です。 – miken32

関連する問題