downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

SoapFault::__toString> <SoapFault::__construct
[edit] Last updated: Fri, 10 Feb 2012

view this page in

SoapFault::SoapFault

(PHP 5 >= 5.0.1)

SoapFault::SoapFaultSoapFault コンストラクタ

説明

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

このクラスは、PHP ハンドラから SOAP フォールトレスポンスを送信した場合に有用です。 faultcode, faultstring, faultactor および detail は SOAP フォールトの標準的な要素です。

パラメータ

faultcode

SoapFault のエラーコード

faultstring

SoapFault のエラーメッセージ

faultactor

エラーの原因となったアクターを識別する文字列

detail

エラーの原因についての詳細な情報

faultname

WSDL からの厳密なフォールトエンコーディングを取得するために利用可能

headerfault

レスポンスヘッダにおいて SOAP ハンドラがエラーの報告処理を行っている間に利用可能

例1 いくつかの例

<?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();
?>

SOAP フォールトを投げるために PHP の例外機構を使用することができます。

例2 いくつかの例

<?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();
?>

参考



SoapFault::__toString> <SoapFault::__construct
[edit] Last updated: Fri, 10 Feb 2012
 
add a note add a note User Contributed Notes SoapFault::SoapFault
Istratov Vadim 14-Dec-2010 11: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 19-May-2010 08: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 13-Jul-2008 06: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-Jul-2007 05:59
SoapFault extends the base Exception class.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites