在PHP 5.4中没有调用SoapFault异常

时间:2015-04-22 07:44:01

标签: php web-services soap wsdl

我正在尝试测试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

0 个答案:

没有答案