Добрый день. Подскажите,пожалуйста, можно ли отправить данные XML (XDTO) на веб сервис по WS ссылке? Я нагуглил только пример по получению данных, а нужно отправить. Это реально?
HTTPЗапрос = Новый HTTPЗапрос(РесурсНаСервере);
HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаЗапроса);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
(1)А есть описание этого веб-сервиса? Там должно быть указано, какие методы что делают. Затем на нужный метод передать свои данные "Прокси.<имя_метода(параметры)>"
Суть в том, что я сформировал файл xml по техзаданию и мне нужно его отправить на веб сервис. Я поднял веб сервис, используя apache24, прочитал WS ссылку, но понятия не имею, каким образом мне отправить XML файл на этот сервис. Прошу пнуть в нужном направлении
По этой вебссылке которую ты получил, есть описание всех типов данных. И модель данных которые ожидает сервис. Так же по этой ссылке есть описание метода который необходимо вызвать. Просто пройди по ссылке глазками и глянь. Все необходимые данные есть в wsdl - для этого он и нужен. Наверняка имя метода есть и где-то в прокси, который создаешь из ссылки, сейчас лень смотреть. Но это не имеет значения. После того как прочитал xml вызывай метод как тебе подсказали уже в (8)
(8) Если посмотреть в конфигураторе WS ссылку, там есть методы. Вот меня интересует метод InsertOrders. Но как его применить.
Если я пробую это делать по вашему комментарию типа Прокси.InsertOrders(ЧтениеXML), то получаю ошибку "Ошибка при вызове метода контекста", а если посмотреть детально эту ошибку, то с "по причине: Несоответствие типов (параметр номер '1')"
Где глянуть, какой должен быть тип параметра, может туда нужно передать ОбъектXDTO
(10)На скринах прилагаю образец своего веб-сервиса. Там один входной параметр "PaymentData" с типом "Message" из пакета "http://www.1c.kz/esd/message". Объект "Message", в свою очередь, состоит из трех параметров. Т.к. данный пакет у меня универсальный и используется и в других методах, то в данном случае я заполняю только "Documents" (тип СписокXDTO). Заполняю я его данными объекта "PaymentsData".
Данные отправляю на него следующим образом:
Определения = Новый WSОпределения("Полный_путь_к_сервису?wsdl","Имя_пользователя","Пароль_пользователя");
Прокси = Новый WSПрокси(Определения,"http://DataExchangeESD","ISP_DataExchangeESD_BK", "ISP_DataExchangeESD_BKSoap");
Прокси.Пользователь = "Имя_пользователя";
Прокси.Пароль = "Пароль_пользователя";
ТипОтвета = Прокси.ФабрикаXDTO.Тип("http://www.1c.kz/esd/message","Message");
ДанныеОбъект = Прокси.ФабрикаXDTO.Создать(ТипОтвета);
Пока РезультатЗапроса.Следующий() Цикл
ТипОбъекта = Прокси.ФабрикаXDTO.Тип("http://www.1c.kz/esd/message","PaymentsData");
XDTOОбъект = Прокси.ФабрикаXDTO.Создать(ТипОбъекта);
XDTOОбъект.PaymentRef = XMLСтрока(РезультатЗапроса.Ссылка.УникальныйИдентификатор());
XDTOОбъект.ChecktRef = XMLСтрока(РезультатЗапроса.ДокументОснование.УникальныйИдентификатор());
XDTOОбъект.Summ = РезультатЗапроса.СуммаДокумента;
ДанныеОбъект.Documents.Добавить(XDTOОбъект);
КонецЦикла;
ОтветСервиса = Прокси.CashReceipts(ДанныеОбъект);
Показать
В Вашем случае, если несколько параметров, то смотрите, какого они типа и, если это простой тип (строка, число, булево), то заполняете его сразу соответствующими данными. Если же это сложный тип, то создаете XDTOОбъект нужного типа и заполняете его данными. И так, пока не разложите все на параметры с простым типом.
(9) В нужном мне методе используются параметры wsKey, depotUserDefinedId - это строки для авторизации. И locationsAndOrders - это массив, котором выгружаются документы "Заказы"
В (8) мне подсказали, что нужно выполнить вот такой код Прокси.InsertOrders(параметры). В каком виде мне передать эти параметры, по одному или в структуре. И где можно увидеть хоть один пример, как это делается.
Вчера начал дергать заказчика с его ТЗ, так он говорит мне, используйте POST для передачи данных на наш WS сервис. Если это WS, какие тут могут быть http ((