PHP Doku:: SoapFault constructor - soapfault.soapfault.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzWeb ServicesSOAPThe SoapFault classSoapFault::SoapFault

Ein Service von Reinhard Neidl - Webprogrammierung.

The SoapFault class

<<SoapFault::__construct

SoapFault::__toString>>

SoapFault::SoapFault

(PHP 5 >= 5.0.1)

SoapFault::SoapFaultSoapFault constructor

Beschreibung

SoapFault::SoapFault ( string $faultcode , string $faultstring [, string $faultactor [, string $detail [, string $faultname [, string $headerfault ]]]] )

This class is used to send SOAP fault responses from the PHP handler. faultcode, faultstring, faultactor and detail are standard elements of a SOAP Fault.

Parameter-Liste

faultcode

The error code of the SoapFault.

faultstring

The error message of the SoapFault.

faultactor

A string identifying the actor that caused the error.

detail

More details about the cause of the error.

faultname

Can be used to select the proper fault encoding from WSDL.

headerfault

Can be used during SOAP header handling to report an error in the response header.

Beispiele

Beispiel #1 Some examples

<?php
function test($x)
{
    return new 
SoapFault("Server""Some error message");
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

It is possible to use PHP exception mechanism to throw SOAP Fault.

Beispiel #2 Some examples

<?php
function test($x)
{
    throw new 
SoapFault("Server""Some error message");
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

Siehe auch


4 BenutzerBeiträge:
- Beiträge aktualisieren...
Istratov Vadim
15.12.2010 15:46
In case you need to return SOAP Fault for SOAP Client based on Adobe Flash/Flex/AIR and stuck with Flash's inability to process SOAP messages with HTTP code 500 (that's what SOAP Fault returns; read more on this error here: http://bugs.php.net/bug.php?id=43507) then try this dirty hack:

<?php
$server
= new SoapServer ( "SomeWSDL.wsdl" );
$server->setClass ( "SOAP_Class" );

/**
 * Catching SOAP Server response and overriding HTTP Status code.
 */
ob_start();
$server->handle ();
$soapResponse = ob_get_contents();
ob_end_clean();

header('HTTP/1.0 200 OK');
echo
$soapResponse;
?>

Keep in mind that from PHP 5.2.6 SOAP Fault has an HTTP Status Code = 200 if User-agent is "Shockwave Flash", but when Flash object is integrated into HTML page SOAP Server receives User-agent = Broswer-agent and NOT "Shockwave Flash".

Also it'll be a good idea to return HTTP 200 Code only if 500 Error is caused by known service faults.
klemens dot r at gmail dot com
20.05.2010 11:17
To get custom Soap Error Codes use in the catch $e->faultcode instead of $e->getCode.

<?php
try {
   
// ...
} catch (SoapFault $e) {
    echo
$e->faultcode;
}
?>
del at babel dot com dot au
14.07.2008 9:10
There are only a few legitimate "codes" that a SOAP fault can have and be understood by most clients in accordance with the protocol.  You can't just pass in, for example, a database error code or you'll get a fatal error like "SoapFault::__construct(): Invalid parameters. Invalid fault code."

The ones you generally want to use are "Sender" where you've gotten bad parameters, or "Receiver" where the server has gotten an error for some reason.

See here:

http://www.w3.org/TR/soap12-part1/#faultcodes
doug
30.07.2007 20:59
SoapFault extends the base Exception class.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)