PHP 日本大会 2024

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

目录

添加笔记

用户贡献笔记 4 条笔记

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);
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