Php Zend Framework 2 SOAP故障异常
我想知道我的SOAP代码中的原始异常详细信息是什么,我有一个SOAP服务器,它按如下方式处理请求:Php Zend Framework 2 SOAP故障异常,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我想知道我的SOAP代码中的原始异常详细信息是什么,我有一个SOAP服务器,它按如下方式处理请求: $options = array( 'soap_version' => SOAP_1_2, 'actor' => someUriAString, 'encoding' => 'UTF-8', 'uri' => someUriAString); $server = new Server(null, $options); $server->
$options = array(
'soap_version' => SOAP_1_2,
'actor' => someUriAString,
'encoding' => 'UTF-8',
'uri' => someUriAString);
$server = new Server(null, $options);
$server->setClass('SomeClass');
$server->setReturnResponse(true);
$serverResponse = $server->handle();
if ($serverResponse instanceof \SoapFault) {
//log the $serverResponse exception details
}
然后我检查是否出现以下异常:
$options = array(
'soap_version' => SOAP_1_2,
'actor' => someUriAString,
'encoding' => 'UTF-8',
'uri' => someUriAString);
$server = new Server(null, $options);
$server->setClass('SomeClass');
$server->setReturnResponse(true);
$serverResponse = $server->handle();
if ($serverResponse instanceof \SoapFault) {
//log the $serverResponse exception details
}
但是当我记录这个异常时,我得到了如下结果:
exception 'Exception' with message 'SoapFault exception: [Receiver] Unknown error
if($message instanceof \Exception) {
do {
echo sprintf(
"%s:%d %s (%d) [%s]\n",
$message->getFile(),
$message->getLine(),
$message->getMessage(),
$message->getCode(),
get_class($message)
);
}
while($message = $message->getPrevious());
}
我需要知道的是原始异常详细信息。。。比如SQL异常,或者例如ORMException等等。i、 我需要准确的原始异常详细信息
我已尝试注册故障异常,如下例所示:
$server->registerFaultException('Doctrine\ORM\ORMException');
我不知道这是否正确,但问题是可能会发生其他类型的异常,我无法注册它们,因为我不知道我的代码中会发生什么异常 这取决于预期的设置方式,但您可以获得以前的异常消息:
$message->getPrevious();
您可以像这样对其进行迭代:
exception 'Exception' with message 'SoapFault exception: [Receiver] Unknown error
if($message instanceof \Exception) {
do {
echo sprintf(
"%s:%d %s (%d) [%s]\n",
$message->getFile(),
$message->getLine(),
$message->getMessage(),
$message->getCode(),
get_class($message)
);
}
while($message = $message->getPrevious());
}
这不起作用。。。我认为这不应该起作用,因为引发SoapFault异常的方式是通过“返回”带有消息“Unknown error”的新SoapFault异常,因为原始异常没有使用
registerFaultException注册,我遇到了同样的问题,最后捕获了所有异常(是,异常
类)并手动抛出一个SoapFault
异常。SoapServer捕获并正确处理所有内容,而不使用registerFaultException
方法。您可以使用instanceof
或getclass
将故障代码设置为您想要的任何值,然后在客户端使用此故障C处理异常颂歌。