虽然网上有很多提到 SoapServer 不支持 SOAP 标头,但这并不正确。
在您的类中,如果您声明一个与标头名称相同的函数,则在收到该标头时将调用该函数。
<?php
class MySoapService {
private $user_is_valid;
function MyHeader($header) {
if ((isset($header->Username)) && (isset($header->Password))) {
if (ValidateUser($header->Username, $header->Password)) {
$user_is_valid = true;
}
}
}
function MySoapRequest($request) {
if ($user_is_valid) {
// 处理请求
}
else {
throw new MyFault("MySoapRequest", "用户无效.");
}
}
}
?>