抛出Exception / SoapFault时Zend Soap Server丢失错误代码

时间:2013-04-12 06:59:24

标签: php zend-framework exception soap error-code

我有一个Zend Backend&一个Zend前端,都通过SOAP进行通信。后端的异常,应该在前端抛出异常/ SoapFault。这适用于错误消息,但错误代码以某种方式丢失。我需要代码能够在前端显示不同语言的错误。我尝试了很多,但无法让它发挥作用。

这是我的SoapController的后端handleSoap函数:

private function handleSOAP($class) {
    $options = array('uri' => 'urn:'.$class.'','location' => $this->_WSDL_URI);
    $server = new Zend_Soap_Server(null, $options);
    $server->setEncoding('ISO-8859-1');
    $server->setClass($class);
    $server->registerFaultException('Exception');
    $server->handle();  
}

在SoapCallerClass的前端:

        public function __construct() {
            $this->client = new Zend_Soap_Client($this->_WSDL_URI);
            $this->client->setWsdlCache(WSDL_CACHE_NONE);
            $this->client->setEncoding('ISO-8859-1');
    }

    public function __call($method,$params) {
       try {
         $this->client->mySoapFunction();    
       } catch (Exception $e)  {
       throw $e; // No error code inside !
       }
    }

1 个答案:

答案 0 :(得分:0)

我查看了传递给Frontend的SoapFault对象。使用getMessage()返回原始消息。使用getCode返回0,但该对象有一个名为faultcode和faultmessage的属性,其中包含原始代码&异常的消息。