1
我想在PHP開發的項目中調用Web服務的功能。這是我的代碼:如何使用SOAP Web服務和它在PHP中的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代碼,它是這樣的:
<?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>
正如你所看到的UserIdentifier
不過去了,refrence
參數在XML沒有名字。
我不明白你的意思是什麼這個句子:SoapHeader類的構造函數簽名顯示第一個參數是一個名稱空間聲明,它不會出現你正在設置。由於我使用了'nusoap',因此我使用了'SoapClient :: __ call()'。我還用'try/catch'和call函數來調用函數'$ res = $ client - > __ call('chargeAmount',array('parameters'=> $ chargeAmountArray)); '我得到這個錯誤:'致命錯誤:未捕獲SoapFault異常:[soapenv:Server]未知' – hodhod
構造函數是當您使用'新SoapHeader()'時調用的函數。你說錯了。不要使用'SoapClient__call()',它已經被棄用了。 – miken32