SoapClient::__setSoapHeaders
(PHP 5 >= 5.0.5, PHP 7, PHP 8)
SoapClient::__setSoapHeaders — Sets SOAP headers for subsequent calls
说明
Defines headers to be sent along with the SOAP requests.
注意:
Calling this method will replace any previous values.
参数
-
headers
-
The headers to be set. It could be SoapHeader object or array of SoapHeader objects. If not specified or set to
null
, the headers will be deleted.
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 SoapClient::__setSoapHeaders() example
<?php
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$header = new SoapHeader('http://soapinterop.org/echoheader/',
'echoMeStringRequest',
'hello world');
$client->__setSoapHeaders($header);
$client->__soapCall("echoVoid", null);
?>
示例 #2 Set Multiple Headers
<?php
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$headers = array();
$headers[] = new SoapHeader('http://soapinterop.org/echoheader/',
'echoMeStringRequest',
'hello world');
$headers[] = new SoapHeader('http://soapinterop.org/echoheader/',
'echoMeStringRequest',
'hello world again');
$client->__setSoapHeaders($headers);
$client->__soapCall("echoVoid", null);
?>

User Contributed Notes 4 notes
kedar dot purohit @ mavs dot uta dot edu ¶
12 years ago
To create complex SOAP Headers, you can do something like this:
Required SOAP Header:
<soap:Header>
<RequestorCredentials xmlns="http://namespace.example.com/">
<Token>string</Token>
<Version>string</Version>
<MerchantID>string</MerchantID>
<UserCredentials>
<UserID>string</UserID>
<Password>string</Password>
</UserCredentials>
</RequestorCredentials>
</soap:Header>
Corresponding PHP code:
<?php
$ns = 'http://namespace.example.com/'; //Namespace of the WS.
//Body of the Soap Header.
$headerbody = array('Token' => $someToken,
'Version' => $someVersion,
'MerchantID'=>$someMerchantId,
'UserCredentials'=>array('UserID'=>$UserID,
'Password'=>$Pwd));
//Create Soap Header.
$header = new SOAPHeader($ns, 'RequestorCredentials', $headerbody);
//set the Headers of Soap Client.
$soap_client->__setSoapHeaders($header);
?>
peamik1953 at NOSPAM dot btinternet dot com ¶
11 years ago
You cannot add an additional header. If you want two headers, and one already exists, first delete it with $client->__setSoapHeaders(NULL). Then issue $client->__setSoapHeaders($headers) where $headers is an array of soapHeader() objects.
jayrajput at gmail dot com ¶
13 years ago
With multiple SOAP headers, when using SoapVar for creation of SoapHeader the PHP code just terminates (command terminated). I am not sure if that is a bug.
Without the SOAPVar the code worked fine for me
There are different way to creart SoapHeader I was using SoapVar and the code was not working. I am still a novice with this SOAP stuff.
Tried using normal strings and it worked fine. SoapHeader can take SoapVar or string as the third argument.
my code:
<?php
// first soap header.
$var = new SoapVar($header, XSD_ANYXML);
$soapHeader = new SoapHeader(NAME_SPACE, "Security", $var);
// second soap header.
$var2 = new SoapVar($header2, XSD_ANYXML);
$soapHeader2 = new SoapHeader(DIFF_NAME_SPACE, "ID", $var2);
$client = new SoapClient($wsdl, array("location" => $location));
$headers = array();
$headers[] = $soapHeader;
$headers[] = $soapHeader2;
// Here my code was just terminating.
$client->__setSoapHeaders($headers);
?>
mlconnor at yahoo dot com ¶
11 years ago
Does anyone know how to get the response headers? The getLastResponseHeader returns a string response, not the complex object I was expecting...
备份地址:http://www.lvesu.com/blog/php/soapclient.setsoapheaders.php