雖然網路上有很多提到 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", "使用者無效。");
}
}
}
?>