起因
最近做了一個專案,需要和其他公司進行介面除錯,該公司的開發工程師是搞java的,然後介面都是soap形式的,自己以前沒有用過soap,都是json格式資料介面,通過檢視文件,以及各種谷歌,自己搞了一個soap的公用方法用來除錯soap介面,特此記錄一下。
程式碼
public function WsSoapClient($wsdl, $filter, $funName, $ccuser = null){
$client = new \SoapClient($wsdl,array('trace' => 1));
try {
if (! empty($ccuser)) {
$str = '';
foreach ($filter as $v) {
$str = $str . $v;
}
$str = 加密方法處理
$ns = 'http://xxxxx.com';
$var = new \SoapVar('<auth:authenticate xmlns:auth="http://www.xxxx.com">
<cc>' . $ccuser['cc'] . '</cc>
<sign>' . $str . '</sign>
</auth:authenticate>', XSD_ANYXML);
$header = new \SoapHeader($ns, 'authenticate', $var);
$client->__setSoapHeaders($header);
}
if ($filter) {
$result = $client->$funName($filter);
} else {
$result = $client->$funName();
}
$result = get_object_vars($result);
} catch (SoapFault $fault) {
echo "Fault! code:", $fault->faultcode, ", string: ", $fault->faultstring;
}
return json_encode($result['return']);
}
後續
因為呼叫過程中,對方一直要我給出請求報文,我開始並不知道怎麼列印出請求報文,後來查閱了一些資料才找到方法。
$client->__getLastRequest();//獲取最後一次請求的報文
$client->__getLastResponse();//獲取最後一次的返回報文
本作品採用《CC 協議》,轉載必須註明作者和本文連結