Как правильно генерировать SOAP WSDL-запросы из массива с несколькими элементами с одинаковыми именами в PHP? - PullRequest
0 голосов
/ 28 августа 2018

Мне нужно сгенерировать следующий запрос XML Soap в PHP:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header/> 
    <soapenv:Body> 
        <ns1:SomeRequest enddate="01-01-2018 00:00:00" authCode="exampleexample"> 
            <ns1:status>STATUS1</ns1:status> 
            <ns1:status>STATUS2</ns1:status> 
        </ns1:SomeRequest> 
    </soapenv:Body> 
</soapenv:Envelope>

Я пытаюсь так:

$this->client = new SoapClient($this->wsdlUrl, [
    'trace' => true,
    'exception' => true,
    'cache_wsdl' => WSDL_CACHE_NONE,
]);

$parameters = [
    'authCode' => 'exampleexample',
    'enddate' => '01-01-2018 00:00:00',
    'status' => ['STATUS1', 'STATUS2']
];

$response = $this->client->SomeSimpleMethod($parameters);

И получить Ошибка преобразования массива в строку . Когда я пытаюсь передать статус в виде строки, например:

$parameters = [
    'authCode' => 'exampleexample',
    'enddate' => '01-01-2018 00:00:00',
    'status' => 'STATUS1'
];

Тогда все отлично работает.

1 Ответ

0 голосов
/ 29 августа 2018

Лучший способ - использовать генератор WSDL to PHP, так как вы не удивитесь, как правильно построить запрос. Поскольку сделать это не всегда просто, используя сгенерированные классы для создания и отправки запроса, вы легко отправите запрос и обработаете ответ, используя подход ООП.

Попробуйте проект PackageGenerator , который лучше всего подходит для создания PHP SDK из любого SOAP WSDL.

...