Dzen
Новичок
Добрый день,
А можно ли дописать в SOAP заголовок , элементы, если заголовок уже был заранее у нас задан?
Т.е. у нас есть:
и хотим еще дописать туда:
Если делать сразу:
То всё получается ок.
Но если заголовок УЖЕ сформирован, то как еще дописать var2, var3?
Потому что, делая вторично так:
ничего не дописывается. ХОТЯ! тут:
http://php.net/manual/ru/soapclient.setsoapheaders.php
сказано, что:
дописать 2 элемента массива, чтобы было:
подобный код эффекта не даёт:
в чём ошибка?
А можно ли дописать в SOAP заголовок , элементы, если заголовок уже был заранее у нас задан?
Т.е. у нас есть:
PHP:
$client->__setSoapHeaders(
array(
new SoapHeader('trans', 'var1', $var1, false),
)
);
PHP:
new SoapHeader('trans', 'var2', $var2, false),
new SoapHeader('trans', 'var3', $var3, false),
Если делать сразу:
PHP:
$client->__setSoapHeaders(
array(
new SoapHeader('trans', 'var1', $var1, false),
new SoapHeader('trans', 'var2', $var2, false),
new SoapHeader('trans', 'var3', $var3, false),
)
);
То всё получается ок.
Но если заголовок УЖЕ сформирован, то как еще дописать var2, var3?
Потому что, делая вторично так:
PHP:
$client->__setSoapHeaders(
array(
new SoapHeader('trans', 'var2', $var2, false),
new SoapHeader('trans', 'var3', $var3, false),
)
);
http://php.net/manual/ru/soapclient.setsoapheaders.php
сказано, что:
т.е. хотелось бы в уже сформированный объект:Вызов этого метода перезаписывает предыдущие значения
PHP:
[_encoding] => windows-1251
[__default_headers] => Array
(
[0] => SoapHeader Object
(
[namespace] => trans
[name] => var1
[data] =>
[mustUnderstand] =>
)
)
PHP:
[_encoding] => windows-1251
[__default_headers] => Array
(
[0] => SoapHeader Object
(
[namespace] => trans
[name] => var1
[data] =>
[mustUnderstand] =>
)
[1] => SoapHeader Object
(
[namespace] => trans
[name] => var2
[data] =>
[mustUnderstand] =>
)
[2] => SoapHeader Object
(
[namespace] => trans
[name] => var3
[data] =>
[mustUnderstand] =>
)
PHP:
$wsdl = '.....';
# SOAP settings
ini_set("soap.wsdl_cache_enabled", "0");
# SOAP object
$client = new SoapClient($wsdl,
array(
'trace'=> 1,
'exceptions' => 0,
'encoding' => 'windows-1251',
)
);
# SOAP headers
$client->__setSoapHeaders(
array(
new SoapHeader('trans', 'var1', $var1, false),
)
);
print_r($client);
// эта часть ниже, не срабатывает.
# SOAP headers
$client->__setSoapHeaders(
array(
new SoapHeader('trans', 'var2', $var2, false),
new SoapHeader('trans', 'var3', $var3, false)
)
);
print_r($client); // тот же что и в первый раз, ничего кроме var1 нету в объекте.