我正在尝试测试Soap客户端。我想看看,如果服务停止,则抛出SoapFault异常。所以这就是我所做的:
$this->_server = 'http://XXXXXXXX.XXXXXXXX.nl/XXXX.ws/prsdfsfdows.asmx?WSDL';
try {
$client = new SoapClient($this->_server, array('trace' => 1, 'exception' => 1));
} catch (SoapFault $e) {
var_dump($e);
exit;
}
我故意拼错了服务器网址以确保soap服务已关闭。
我希望得到一个SoapFaultException。我得到一个E_ERROR
(dev)E_ERROR:SOAP-ERROR:解析WSDL:无法加载 'http://XXXXX.XXXXXXXX.nl/XXXX.ws/prsdfsfdows.asmx?WSDL':过早 标记html第1行中的数据结尾 /var/www/site/web/library/my/webservice.php:60
0在[/var/www/site/web/library/ErrorHandler.php:212]调用的triggerError() 1在[unknown:unknown]
调用的triggerFatalError()
我正在运行PHP 5.4.39
有什么建议吗?
更多信息:
我收到有关this php bug的通知,结果发现它可能与xdebug有关。所以现在我将代码改为:
try {
if(function_exists('xdebug_disable')) {
xdebug_disable();
}
$client = @new SoapClient($this->_server, array("exceptions"=> 1));
$this->setClient($client);
xdebug_enable();
} catch (SoapFault $ex) {
echo 'soapfault';
echo $ex->getTraceAsString();
exit;
} catch (Exception $e) {
echo $e->getMessage();
}
但我仍然看到E_ERROR代替SoapFault