I'd like the same features on Zend_Rest_Server also, but just noticed that the Zend_Rest_Server::fault returns a DOMDocument
*ZF-3102 <http://framework.zend.com/issues/browse/ZF-3102>* is the issue regarding throwExceptions* * I've just noticed that Zend_XmlRpc_Server_Fault has the getException method so I don't think this needs an issue any more. -- /James On Fri, Apr 11, 2008 at 8:40 PM, Matthew Weier O'Phinney <[EMAIL PROTECTED]> wrote: > -- James Dempster <[EMAIL PROTECTED]> wrote > (on Friday, 11 April 2008, 08:16 PM +0100): > > That's the way I use SoapServer. > > I would have thought it was more in keeping with the SoapServer API to > allow > > the Exception to be thrown but as it already doesn't maybe add the > option. > > Grrrr... you're right. The xml-rpc server was written a *loooonggg* time > ago, and I use that more than I use Soap, so I forget some details. > > Could you open an issue, requesting two things? > > * Accesors for the exception in the fault object > * Flag to allow throwing exceptions from the server > > Thanks! > > > > Example > > -- server.php -- > > <?php > > > > class MyPersonalException extends Exception {} > > > > class SoapTestClass { > > > > public function testOne($value) { > > return "You sent $value"; > > } > > > > public function testTwo($value) { > > throw new MyPersonalException('Ooops looks like we made a > mistake, but > > we can tell you about it'); > > } > > > > public function testThree($value) { > > throw new Exception('You Shouldn\'t see this error, cause it is > > unhandled'); > > } > > } > > > > try { > > $server = new SoapServer(null, array('uri' => ' > http://localhost/tests/soap/ > > server.php')); > > $server->setClass('SoapTestClass'); > > $server->handle(); > > } catch(MyPersonalException $e) { > > $server->fault($e->getCode(), $e->getMessage()); > > } catch(Exception $e) { > > // do other things like logging, email the admin as this was an > unexpected > > error. > > $server->fault('ERROR', 'An unknown error occured. Please try > again.'); > > } > > -- /server.php -- > > -- client.php -- > > <?php > > $client = new SoapClient( > > null, > > array( > > 'location' => 'http://localhost/tests/soap/server.php', > > 'uri' => 'http://localhost/tests/soap/server.php', > > 'trace' => 1 > > ) > > ); > > > > echo '<b>Request One:</b><br/>'; > > try { > > echo $client->testOne('FooBar'); > > } catch (SoapFault $soapFault) { > > echo $soapFault; > > } > > echo '<br/><br/>'; > > > > echo '<b>Request Two:</b><br/>'; > > try { > > echo $client->testTwo('FooBar'); > > } catch (SoapFault $soapFault) { > > echo $soapFault; > > } > > echo '<br/><br/>'; > > > > echo '<b>Request Three:</b><br/>'; > > try { > > echo $client->testThree('FooBar'); > > } catch (SoapFault $soapFault) { > > echo $soapFault; > > } > > echo '<br/><br/>'; > > -- /client.php -- > > > > -- > > /James > > > > On Fri, Apr 11, 2008 at 7:30 PM, Matthew Weier O'Phinney < > [EMAIL PROTECTED]> > > wrote: > > > > -- James Dempster <[EMAIL PROTECTED]> wrote > > (on Friday, 11 April 2008, 07:16 PM +0100): > > > The problem with this is that you loose the actual exception > object. > > > > Okay, how about storing the exception object in the fault response? > That > > would give you access to it should you want to log it or manipulate > the > > response based on the exception. > > > > > I would much prefer something along what the front controller > does. > > > Zend_Controller_Front::getInstance()->throwExceptions(true); > > > > > > Something like this would be handy for example... > > > > > > $server->throwException(true); > > > try { > > > echo $server->handle(); > > > } catch (MyPersonalException $e) { > > > echo $server->fault($e); > > > } catch (Exception $e) { > > > // do other things like logging, email the admin as this was > an > > unexpected > > > error. > > > echo $server->fault(new Exception('An unknown error occured. > Please > > try > > > again.')); > > > } > > > > I'm not likely to implement this as we're trying to follow the > > SoapServer API with our server components -- and that's not how > > SoapServer works. Fault responses are still a normal response -- > they > > just indicate an error occurred. > > > > > On Fri, Apr 11, 2008 at 6:05 PM, Matthew Weier O'Phinney < > > [EMAIL PROTECTED]> > > > wrote: > > > > > > -- James Dempster <[EMAIL PROTECTED]> wrote > > > (on Friday, 11 April 2008, 04:33 PM +0100): > > > > I have the very same problem. > > > > > > > > I'd much prefer to catch the Exceptions myself, and deal > with them > > by > > > either > > > > allowing the message though based on the type of Exception, > or > > change it > > > to a > > > > generic Exception. > > > > > > > > Maybe time to submit an issue regarding this? > > > > > > Actually, you can capture the response, and test to see if it > is a > > fault > > > response, and then modify it before sending: > > > > > > $response = $server->handle(); > > > > > > if ($response instanceof Zend_XmlRpc_Server_Fault) { > > > // handle differently > > > } else { > > > echo $response; > > > } > > > > > > > > > > On Fri, Apr 11, 2008 at 3:28 PM, Peter Boehlke < > > [EMAIL PROTECTED]> > > > wrote: > > > > > > > > > > > > Hi there, > > > > > > > > i'm trying around with the Zend_XMLRPC-Server. So far, > i'm very > > > pleased > > > > with > > > > it. Everything runs without Problems etc. > > > > > > > > But i have one Problem concerning the > Zend_XmlRpc_Server_Fault > > > > (standard)messages. I want to respond with my own > > fault-XML-grids, if > > > > something in the Request was wrong. > > > > > > > > Furthermore, i want to validate the Request by myself > and > > generate > > > more > > > > exact error-messages in the fault-message; > > > > > > > > I hope this is understandable! ;) > > > > Thank you in advance, > > > > > > > > Peter Boehlke > > > > -- > > > > View this message in context: http://www.nabble.com/ > > > > > > > > > > Zend_XMLRPC_Server-overwrite--response-customized-Fault-Msgs.-tp16627837p16627837.html > > > > Sent from the Zend Framework mailing list archive at > > Nabble.com. > > > > > > > > > > > > > > > > > > -- > > > Matthew Weier O'Phinney > > > Software Architect | [EMAIL PROTECTED] > > > Zend - The PHP Company | http://www.zend.com/ > > > > > > > > > > -- > > Matthew Weier O'Phinney > > Software Architect | [EMAIL PROTECTED] > > Zend - The PHP Company | http://www.zend.com/ > > > > > > -- > Matthew Weier O'Phinney > Software Architect | [EMAIL PROTECTED] > Zend - The PHP Company | http://www.zend.com/ >
