При отправке запроса веб-сервису, возникла проблема с типами передаваемых параметров. Мне необходимо было передать дату. Сначала я подумал, что отправлю ее обычно как элемент массива, SoapClient "переварит" массив и все будет окей. Но веб-сервис вернул ошибку, код ошибки гласит:
"параметр передан в структуру, но по типу не подходит ко входным параметрам".
Посмотрев внимательней на описание входных значений, стало понятно, что веб-сервис ждет параметр типа ДатаВремя, формат - DateTime::ATOM.
Чтобы отправить через Soap параметр с указанием типа, необходимо использовать SoapVar.
сформированный XSD:
XSD описание веб-сервисов, любит 1С и ее проекты (1С-Коннект и т.д.).
"параметр передан в структуру, но по типу не подходит ко входным параметрам".
Посмотрев внимательней на описание входных значений, стало понятно, что веб-сервис ждет параметр типа ДатаВремя, формат - DateTime::ATOM.
Чтобы отправить через Soap параметр с указанием типа, необходимо использовать SoapVar.
class MyStructure { public $Params; } $date = new DateTime(); $param = new MyStructure(); $param->Params->Property->name = 'nameParams'; $param->Params->Property->Value = new SoapVar($date->format('c'), XSD_DATETIME, 'dateTime', 'http://www.w3.org/2001/XMLSchema', 'Value'); |
<ns2:Params> <ns1:Property name="nameParams"> <ns1:Value xsi:type="xsd:dateTime"> 2022-02-09T22:31:25+03:00 </ns1:Value> </ns1:Property> </ns2:Params> |
XSD описание веб-сервисов, любит 1С и ее проекты (1С-Коннект и т.д.).