SoapHeader 类

(PHP 5、PHP 7、PHP 8)

简介

表示 SOAP 头部。

类概要

class SoapHeader {
/* 属性 */
public string $name;
public mixed $data = null;
/* 方法 */
public __construct(
    string $namespace,
    string $name,
    mixed $data = ?,
    bool $mustunderstand = ?,
    string $actor = ?
)
}

属性

actor

data

mustUnderstand

name

namespace

目录

添加笔记

用户贡献笔记 5 个笔记

16
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>
1
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);
?>
2
mixmaster1413 at gmail dot com
1 年前
我遇到过的一个应该在这里注意的事情是,如果您遇到错误“无法在接收方处理,因为端点调度程序存在地址过滤器不匹配。请检查发送方和接收方的端点地址是否一致。”并且您绝对确定您的协议和服务 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);
1
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>
-12
voroks at logics dot net dot au
9 年前
john at jtresponse dot co dot uk 的示例确实遗漏了一个重要点:为了能够添加属性,必须在 WSDL 中提及它们。如果它们不存在于 WSDL 中,它们将不会显示为属性,而是 <item><key/><value/></item> 元素。
To Top