SoapServer::fault

(PHP 5, PHP 7, PHP 8)

SoapServer::fault发出指示错误的 SoapServer 错误

描述

public SoapServer::fault(
    string $code,
    string $string,
    string $actor = "",
    mixed $details = null,
    string $name = ""
): void

向当前请求的客户端发送响应,指示错误。

注意:

这只能在处理请求时调用。

参数

code

要返回的错误代码

string

错误的简要描述

actor

一个字符串,标识导致错误的参与者。

details

错误的更多详细信息

name

错误的名称。这可以用来从 WSDL 文件中选择一个名称。

返回值

没有返回值。

参见

添加笔记

用户贡献的笔记 5 笔记

Amr Mostafa
14 年前
此函数目前还会终止执行,这可能不理想。参见:http://bugs.php.net/bug.php?id=49513
匿名
16 年前
如果您使用 Adobe Flex、Flash 或 AIR 作为 SOAP 客户端,并且在遇到 SOAP 错误时无法获取错误消息,请升级到 PHP 5.2.6。

详细信息在
http://bugs.php.net/bug.php?id=43507
christian at cmjdesign dot dk
11 年前
嗨,
要控制错误输出,您可以执行以下操作

/**
* mySoapServer 类
*/
class mySoapServer extends SoapServer {
public function __construct($wsdl, array $options = null) {
parent::SoapServer($wsdl, $options);
}
public function fault ($code, $string, $actor = null, $details = null, $name = null) {
throw new SoapFault($code, $string, $actor, $details, $name);
}
}

使用
try {
$server = new mySoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('mySoapAPI');
$server->handle();
} catch (SoapFault $exc) {
echo $exc->getTraceAsString();
}

这就是我完成的方式,
希望它能帮到某些人。
dub357 at gmail dot com
12 年前
此函数还会向客户端发送一个 500 响应代码,以及请求。
这导致了我遇到的一个 Apache Axis 1.2 客户端出现问题,所以我实现了自己的错误处理

<?php
header
("Content-Type: text/xml");
header("Status: 200");
die(
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\\"http://schemas.xmlsoap.org/soap/envelope/\\">
<SOAP-ENV:Body>
<
SOAP-ENV:Fault>
<
faultcode>500</faultcode>
<
faultstring>".$ex->getMessage())."</faultstring>
</
SOAP-ENV:Fault>
</
SOAP-ENV:Body>
</
SOAP-ENV:Envelope>");
?>
brian dot reynolds at risaris dot com
12 年前
示例用法

return new SoapFault( "Client", "foo 或 bar 必须提供");

SOAP 错误代码

VersionMismatch: 找到了 SOAP Envelope 元素的无效命名空间
MustUnderstand : Header 元素的直接子元素,其 mustUnderstand 属性设置为 "1",未被理解
Client: 消息格式不正确,或包含不正确的信息
Server: 服务器出现问题,导致消息无法继续处理
To Top