PHP - Создание вложенных заголовков мыла с помощью SoapClient - PullRequest
0 голосов
/ 28 июля 2011

Я использую класс SoapClient в PHP, чтобы сделать запрос.Я пытаюсь создать переменную вложенного заголовка для передачи в моем запросе.

В настоящее время мои заголовки запросов выглядят так:

<SOAP-ENV:Header>
    <ns2:type>request</ns2:type>
    ...
</SOAP-ENV:Header>

Я хочу, чтобы это выглядело так,

<SOAP-ENV:Header>
    <ns2:ei>
        <ns2:type>request</ns2:type>
        ...
    </ns2:ei>
</SOAP-ENV:Header>

В настоящее время я создаю заголовки, подобные этому,

$headers[] = new SoapHeader(
        $nsp1,
        "type",
        "request"
    );
$headers[] = new SoapHeader(...)

Я пробовал различные способы вложения заголовков, включая,

$headers[] = new SoapHeader(
   $nsp1,
   "ei",
   new SoapHeader(
        $nsp1,
        "type",
        "request"
    )
);

, но это приводит к фатальной ошибке.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Вы не можете создать вложенный экземпляр, вы можете попробовать что-то вроде этого

//Untested
$strHeaderComponent_Ei = "<ei><type>$strType</type></ei>";

$objVar_Ei_Inside = new SoapVar($strHeaderComponent_Ei, XSD_ANYXML, null, null, null);
$objHeader_Ei_Outside = new SoapHeader($nsp1, 'ei', $objVar_Ei_Inside); 
1 голос
/ 28 июля 2011

Вы можете попробовать использовать объект или массив в качестве параметра $ data

Объект:

<?php
class MySoapHeader
{
    public $type = 123;
    public $value = 'UNKNOWN';
}

$headers1[] = new SoapHeader(
        'n1',
        'ei',
        new MySoapHeader()
    );

print_r ($headers1);
?>

Дает

Array ( [0] => SoapHeader Object ( [namespace] => n1 [name] => ei 
    [data] => MySoapHeader Object ( [type] => 123 [value] => UNKNOWN ) 
    [mustUnderstand] => ) ) 

Массив:

<?php
    $headers2[] = new SoapHeader(
        'n1',
        'ei',
        array ('type'=>123,'value'=>'UNKNOWN')
    );

    print_r ($headers2);
?>

Придает

Array ( [0] => SoapHeader Object ( [namespace] => n1 [name] => ei
    [data] => Array ( [type] => 123 [value] => UNKNOWN ) [mustUnderstand]
    => ) )
...