PHP Conference Japan 2024

SoapHeader 類別

(PHP 5, PHP 7, PHP 8)

簡介

表示 SOAP 標頭。

類別概要

類別 SoapHeader {
/* 屬性 */
公開 字串 $name;
公開 混合 $data = null;
/* 方法 */
公開 __construct(
    字串 $namespace,
    字串 $name,
    混合 $data = ?,
    布林 $mustunderstand = ?,
    字串 $actor = ?
)
}

屬性

actor

data

mustUnderstand

name

namespace

目錄

新增註釋

使用者貢獻的註釋 4 個註釋

mixmaster1413 at gmail dot com
1 年前
我遇到一個我覺得應該在這裡說明的情況:如果您遇到錯誤訊息「由於 endpointdispatcher 的 addressfilter 不符,接收方無法處理。請檢查傳送方和接收方的 endpointaddresses 是否一致。」而且您完全確定您的協定和服務 URL 相符,請發送「To」SoapHeader。

$soapHeaders = array(
new \SoapHeader('http://www.w3.org/2005/08/addressing', 'Action', 'your-action', true),
new \SoapHeader('http://www.w3.org/2005/08/addressing', 'To', 'your-service-endpoint-url')
);
$soapClient->__setSoapHeaders($soapHeaders);
john at jtresponse dot co dot uk
12 年前
這些範例都不太適合我。
注意:您不應該需要硬編碼任何 XML。

以下是如何建立巢狀標頭並包含參數的範例。

$client = new SoapClient(WSDL,array());

$auth = array(
'UserName'=>'USERNAME',
'Password'=>'PASSWORD',
'SystemId'=> array('_'=>'DATA','Param'=>'PARAM'),
);
$header = new SoapHeader('NAMESPACE','Auth',$auth,false);
`$client->__setSoapHeaders($header);`

會產生以下的標頭 XML:

<SOAP-ENV:Header>
<ns1:Auth>
<ns1:SystemId Param="PARAM">DATA</ns1:SystemId>
<ns1:UserName>USERNAME</ns1:UserName>
<ns1:Password>PASSWORD</ns1:Password>
</ns1:Auth>
</SOAP-ENV:Header>
ericvaneldik at gmail dot com
5 年前
如果您想要建立沒有命名空間且沒有項目鍵值設定的 soap 標頭,您可以使用 SoapVar

要得到以下結果:
<SOAP-ENV:Header>
<IdentityHeader>
<SessionID>123456789</SessionID>
</IdentityHeader>
</SOAP-ENV:Header>

您可以使用以下 PHP 程式碼:
<?php
$headerVar
= new SoapVar('<IdentityHeader><SessionID>123456789</SessionID></IdentityHeader>',
XSD_ANYXML);
$header = new SoapHeader('http://tempuri.org/','RequestParams',
$headerVar);
?>
abdul dot rashid at paytabs dot co
8 年前
補充一些關於 john at jtresponse dot co dot uk 的說明

在 PHP 中,您可以嘗試以下程式碼來避免 <item><key/>

`$Auth = new stdClass();`
`$Auth->SystemId = "DATA";`
`$Auth->UserName = "USERNAME";`
`$Auth->Password = "PASSWORD";`

`$header = new SoapHeader('NAMESPACE','Auth',$Auth,false);`
`$soapClient->__setSoapHeaders($header);`

<SOAP-ENV:Header>
<ns1:Auth>
<ns1:SystemId>DATA</ns1:SystemId>
<ns1:UserName>USERNAME</ns1:UserName>
<ns1:Password>PASSWORD</ns1:Password>
</ns1:Auth>
</SOAP-ENV:Header>
To Top