Я пытаюсь отправить несколько повторяющихся элементов с помощью Soap Call. Я попытался построить массив и отправить, но он будет обрабатывать только первый элемент. Следующий пост был полезен, так как я адаптировал код, используя SoapVar SoapVar / Param и вложенные повторяющиеся элементы в SOAP . Однако проблема, с которой я сейчас сталкиваюсь, заключается в том, что при попытке отправить мой запрос на мыло вызову soap требуется запрос в виде массива, и следующий код получает ошибку от сервера мыла. Файл WSDL, с которым я работаю, находится по адресу https://ecomapi.networksolutions.com/soapservice.asmx?wsdl
Я заменил элементы заголовка в целях безопасности (мое имя, мой номер сертификата, мой токен), но кроме этого полный код приведен ниже. Есть мысли о том, что я здесь делаю не так?
<?php
$ns = 'urn:networksolutions:apis';
$header->Application = 'my name';
$header->Certificate = 'my cert number';
$header->UserToken = 'my token';
$credentials = new SOAPHeader($ns, "SecurityCredential", $header);
$client = new SoapClient('https://ecomapi.networksolutions.com/soapservice.asmx?wsdl',
array('soap_version' => SOAP_1_1 ,
'trace' => 1));
$array1=array();
$array1[]=new SoapVar("9",XSD_STRING,null,null,'ProductId');
$array1[]=new SoapVar("500",XSD_STRING,null,null,'QtyInStock');
$soap1 = new SoapVar($array1, SOAP_ENC_OBJECT, null, null, "Inventory");
$interim = array($soap1);
$test = array();
$test[] = new SoapVar($interim, SOAP_ENC_OBJECT, null, null, "UpdateInventoryRequestList");
$array2=array();
$array2[]=new SoapVar("10",XSD_STRING,null,null,'ProductId');
$array2[]=new SoapVar("500",XSD_STRING,null,null,'QtyInStock');
$soap2 = new SoapVar($array2, SOAP_ENC_OBJECT, null, null, "Inventory");
$interim2 = array($soap2);
$test[] = new SoapVar($interim2, SOAP_ENC_OBJECT, null, null, "UpdateInventoryRequestList");
$submit1 = array($test);
$submit = new SoapVar($submit1, SOAP_ENC_OBJECT, null, null, "PerformMultipleRequest");
$final_submit = array($submit);
$result = $client->__soapCall("PerformMultiple", $final_submit, NULL, $credentials);
echo "REQUEST:\n" . $client->__getLastRequest() . "\n"; // gets last SOAP request
echo "RESPONSE:\n" . $client->__getLastResponse() . "\n"; // gets last SOAP respone
?>