Re: [SOAP] Re: E_ERROR in SoapClient

[email protected] (Richard Quadling)
Newsgroups php.soap
Message-ID <[email protected]>
2009/7/31 Paulo Azevedo <[email protected]>:
> Thanks for your answer.
> Your code is complaining about loading the extension, not the WSDL file.
>
> I've tried this code:
> $client = new SoapClient( "http://127.0.0.1/nonexiting.wsdl",
>    array(
>        'exceptions' => true,
>        'trace'    => true,
>        'cache_wsdl' => WSDL_CACHE_NONE
>    )
> );
>
> and it gives the error:
> PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from '
> http://127.0.0.1/nonexiting.wsdl' : failed to load external entity "
> http://127.0.0.1/nonexiting.wsdl"
>
> As far as i know the 'exceptions' => true is set by default but it only
> works for SoapFault exceptions.
>
> 2009/7/31 Richard Quadling <[email protected]>
>
>> 2009/7/31 Richard Quadling <[email protected]>:
>> > 2009/7/31 Paulo Azevedo <[email protected]>:
>> >> My problem is that SoapClient triggers a E_ERROR ( Fatal Error ) instead
>> of
>> >> throwing an Exception.
>> >> Since E_ERROR cannot be catchable I don't find a way to gracefully
>> handly
>> >> this problem.
>> >>
>> >> PHP Fatal error:  SOAP-ERROR: Encoding: object hasn't 'profileData'
>> property
>> >>
>> >>
>> >> Is there any way to gracefully catch this error?
>> >>
>> >> --
>> >> -Paulo
>> >> http://twitter.com/halufa
>> >>
>> >
>> > You can tell the SoapClient to generate exceptions rather than errors.
>> >
>> > [1] "The exceptions option is a boolean value defining whether soap
>> > errors throw exceptions of type SoapFault."
>> >
>> > Regards,
>> >
>> > Richard.
>> >
>> > [1] http://docs.php.net/manual/en/soapclient.soapclient.php
>> > --
>> > -----
>> > Richard Quadling
>> > Zend Certified Engineer :
>> http://zend.com/zce.php?c=ZEND002498&r=213474731
>> > "Standing on the shoulders of some very clever giants!"
>> > ZOPA : http://uk.zopa.com/member/RQuadling
>> >
>>
>> <?php
>> try
>>        {
>>        $client=new SoapClient('
>> http://api.rkd.reuters.com/schemas/wsdl/Charts_1_HttpAndRKDToken.wsdl',
>> array('exceptions' => True));
>>        }
>> catch(Exception $exception)
>>        {
>>        echo $exception;
>>        }
>> echo 'Finished';
>>
>>
>> outputs ...
>>
>> SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Unknown required
>> WSDL extension 'http://schemas.xmlsoap.org/wsdl/soap/' in
>> Z:\soapbad.php:4
>> Stack trace:
>> #0 Z:\soapbad.php(4): SoapClient->SoapClient('http://api.rkd....', Array)
>> #1 {main}Finished
>>
>>
>>
>> --
>> -----
>> Richard Quadling
>> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
>> "Standing on the shoulders of some very clever giants!"
>> ZOPA : http://uk.zopa.com/member/RQuadling
>>
>
>
>
> --
> -Paulo
> http://twitter.com/halufa
>

Really?

Look at my code ...

<?php
try
	{
// 	$client=new
SoapClient('http://api.rkd.reuters.com/schemas/wsdl/Charts_1_HttpAndRKDToken.wsdl',
array('exceptions' => True));
	$client = new SoapClient( "http://127.0.0.1/nonexiting.wsdl",
array('exceptions' => True));
	}
catch(Exception $exception)
	{
	echo $exception;
	}
echo PHP_EOL, PHP_EOL, "Look I finished the program and didn't crash!";
?>

See the message at the end?

I run this and get output of ...

===============
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load
from 'http://127.0.0.1/nonexiting.wsdl' : failed to load external
entity "http://127.0.0.1/nonexiting.wsdl"
 in Z:\soapbad.php:5
Stack trace:
#0 Z:\soapbad.php(5): SoapClient->SoapClient('http://127.0.0....', Array)
#1 {main}

Look I finished the program and didn't crash!
=================


If you are getting the SOAPclient to throw an exception, you would
normally be expected to catch it.

Other wise you end up with an uncaught exception. I use a global
handler for these so I can be lazy.

My catch() clause could just as easily have been ...

echo "We didn't get what we wanted.", PHP_EOL;



-- 
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"
ZOPA : http://uk.zopa.com/member/RQuadling
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.