PHP 以 SOAP 方式调用接口
起因
最近做了一个项目,需要和其他公司进行接口调试,该公司的开发工程师是搞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 协议》,转载必须注明作者和本文链接