2010年2月26日星期五

Re: [fw-webservices] return a soap fault

On 26 February 2010 13:23, Richard Quadling <rquadling@googlemail.com> wrote:
> On 26 February 2010 11:56, Mark Hage <m.c.hage@gmail.com> wrote:
>> Hi,
>>
>> I want to do some validation on the client in my soap server, before the
>> zend_soap_server is actually loaded.
>> I wrote it like this:
>>
>> $validatorObj = new Myclass_Validator();
>> if ($validatorObj->isValid($this->getRequest())===false){
>>    if (isset($_GET['wsdl'])){
>>          //return an empty wdl
>>          $this->handleWSDL('Service_Empty');
>>     } else {
>>          $server = new Zend_Soap_Server();
>>          $server->fault('not valid');
>>     }
>> } else {
>>     //valide
>>     if(isset($_GET['wsdl'])) {
>>          //return the WSDL
>>           $this->handleWSDL('Service_Functions');
>>      } else {
>>            //handle SOAP request
>>            $this->handleSOAP('Service_Functions');
>>       }
>> }
>>
>>
>> The problem is that I don't get the soap fault 'not valid'. How should I do
>> this?
>>
>> Thanks,
>> Mark
>>
>>
>
> I would do the validation in the soap served class (the class you
> supply to the SOAP server by using the setClass() method).
>
> I have this sort of process to allow users to supply data (or ask for
> a WSDL file or the HTML documentation).
>
> When they supply data, the method called does the validation and
> throws normal exceptions. My exceptions generate an email and are
> restricted to only send 1 email for a particular exception per day.
> The email contains a full stack trace and indicators of how many times
> the exception has been thrown since I last examined the code.
>
> By registering the exceptions with the soap server class (
> registerFaultException($Exceptions) ), I can get SOAP faults back to
> the client.
>
> I'm new to Zend and I'm currently only using Zend_Soap (Client,
> Server, WSDL, AutoDiscover), but it seems to be working really well
> for me.
>
> Does that make sense?
>
> Regards,
>
> Richard.
>
> --
> -----
> Richard Quadling
> "Standing on the shoulders of some very clever giants!"
> EE : http://www.experts-exchange.com/M_248814.html
> EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
> ZOPA : http://uk.zopa.com/member/RQuadling
>

When you create the new Zend_Soap_Server, make sure you enable
'exeption' in the options.

--
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

没有评论: