Я довольно новичок в мыльных вызовах, но у меня есть простой, работающий нормально, с использованием массивов.
$xml_array['searchName'] = "websvc";
$xml_Parray['name'] = "Cust Code";
$xml_Parray['value'] = "338877";
// $Parray['searchParameter xsi:type="met:StringParameter"']=$xml_Parray; //errors
$Parray['searchParameter']=$xml_Parray;
$client = new WSSoapClient($wsdl, array('trace' => 1, 'exceptions' => 0));
$client->__setUsernameToken($UserName, $Password);
$client->__setLocation('http://127.0.0.1:80/demo/search');
$xml_array['searchParameters'] = $Parray;
$response = $client->__soapCall("getDocuments", array($xml_array));
Так что это дает мне ...
<searchName>websvc</searchName>
<searchParameters>
<searchParameter>
<name>Cust Code</name>
<value>338877</value>
</searchParameter>
</searchParameters>
НОТеперь мне нужно добавить дополнительный текст
xsi: type = "met: StringParameter"
<searchName>websvc</searchName>
<searchParameters>
<searchParameter xsi:type="met:StringParameter">
<name>Cust Code</name>
<value>338877</value>
</searchParameter>
</searchParameters>
Я просто попытался
$Parray['searchParameter xsi:type="met:StringParameter"']=$xml_Parray;
, но получил ответ
Неустранимая ошибка: SOAP-ERROR: Кодировка: у объекта нет свойства 'searchParameter'
Может кто-нибудь помочь?
Обновление.Я обнаружил, что я пытаюсь сделать это добавить атрибуты!
Так что я попробовал это
array("searchParameter" => array("_" => "$xml_Parray", "xsi:type"=>"met:StringParameter"));
Но я тоже не уверен, что это правильно!