PHP請求webservice接口須要用到soap擴展,因此要先開啓php.ini中的extension=php_soap.dll;
在實際項目應用中封裝了一個方法進行調用,
public function requestSoap($url, $fun, $params) {
$url = $url . '?wsdl';
$params = array(
'parameters' => $params
);
try {
libxml_disable_entity_loader(false);
$client = new \SoapClient($url);
$res = $client->__soapCall($fun, $params);
$funRe = $fun . 'Result';
$ret = json_decode($res->$funRe, true);
} catch (\Exception $e) {
$ret = $e->getMessage();
}
return $ret;
}
複製代碼
注意:在調試過程當中,會發現不少方法不起做用,提示不存在或不可用,是服務器端PHP的soap的wsdl緩存形成的!
兩種方法解決:
1.清除soap緩存:打開php.ini,找到soap.wsdl_cache_dir="D:/wamp/tmp",這是soap的wsdl緩存的文件夾路徑,刪除該路徑下的wsdl文件便可;
2.關閉saop緩存:打開php.ini,找到soap.wsdl_cache_enabled=1,將其改成soap.wsdl_cache_enabled=0,重啓服務便可。