Ответ от web-сервиса (WSDL/SOAP/XDTO) #772340


#0 by MagaDann
Впервые пользуюсь этим объектом и вообще таким обменом. Как получить ответ от веб-сервиса, если у него есть только процедура отправки (которая, конечно, ничего не возвращает)? Я создаю описание фабрики, все прокси и SSL подключаются отлично, вот этот кусок отрабатывает без ошибок: Прокси = Новый WSПрокси(Новый WSОпределения(WSDL.Адрес), WSDL.Пространство, WSDL.Сервис, WSDL.Порт); Но админ веб-сервиса (сторонний) утверждает, что ничего у него не загружалось. Говорит, получи сначала ответ "200" или ответ "500", а потом посмотрим. Можно вообще получить ответ?
#1 by hhhh
вроде там не нужно так глобально, создавать фабрики. Параметры и типы можно вытащить из ws-ссылки.
#2 by Cyberhawk
Для таких случаев (проверить коннект) по правилам хорошего тован реализуют веб-сервис Hello, возвращающий какую-нибудь строку типа "Success"
#3 by Cyberhawk
*тона
#4 by MagaDann
делаю на лету, без ws-ссылки, но это не важно. т.е. таки заставить веб-админа запилить функцию?
#5 by Cyberhawk
Ну если есть возможность "заставить" (попросить), то попроси. Пусть будет какой-нибудь веб-сервис без параметров. Тогда сможешь _быстро_ проверить доступность не только через 1С, но и из SoapUI. Но вообще тебе в данном случае это вряд ли поможет, ибо неясно, что такое "ничего у него не загружалось" (куда?) и как это связано с передачей параметра в веб-сервис
#6 by MagaDann
ну, процедура называется типа "ОтправкаДанных", в параметре массив, по идее, сервис должен принять этот массив
#7 by Cyberhawk
Кинь ссылку на WSDL-описание
#8 by MagaDann
#9 by Cyberhawk
А почемы ты вызываешь метод "ПроцедураОтправки"? Его нет в WSDL-описании... Покажи полностью рабочий код, начиная от получения WSDL-определения из WSDL-файла и заканчивая вызовом метода веб-сервиса, без вырезания кусков кода и замены кусков кода
#10 by MagaDann
в ПолучитьОбъекты просто выборка по запросу с теми же полями.
#11 by Cyberhawk
В отладчике уже смотрел, что структура полей WSПараметр0 и WSПараметр совпадает с требуемой (в WSDL-файле там в итоге заворачиваются структуры из двух строковых реквизитов)?
#12 by Serginio1
Фиддлером посмотри что возвращается
#13 by MagaDann
Вот тут, кстати, вопрос. Параметр имеет тип "ListOfItemTopElmt", который в свою очередь заполняется параметром "ListOfItem", но там указан не "тип", а "ссылка". При этом WSПараметр0["ListOfItem"] = WSПараметр нормально заполняется.
#14 by MagaDann
Сделали мне функцию вместо процедуры, возвращает, кажется, 504 ошибку, "Истекло время ожидания шлюза"...
#15 by Serginio1
А зачем такие сложности. У каждого параметра есть Тип. И короче и понятнее
#16 by Serginio1
В твоем случае ТипWSПараметра0    = Фабрика.Тип(";);
#17 by Serginio1
Попробуй скачать WSDL и ссохранить его на диск     ПроксиWS=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя,,,Новый ЗащищенноеСоединениеOpenSSL);
#18 by MagaDann
Заметил косяк... WSDL у меня на https, а если посмотреть точку подключения, то там http. Как сделать так, чтобы в точку подключения попал https? Свойство ТочкаПодключения только для чтения. Сетевой прокси делаю на 443.
#19 by Serginio1
Если нужен https то измени путь в WSDL soap:address location Ну и проконсультируйся с разработчиками. Если http то и параметр защищенное соединение не нужно
#20 by MagaDann
Да, поменяли на https в WSDL. Но ещё и поменяли процедуру, теперь есть выходной параметр statuscode string Его как сделать? statuscode = Прокси.ФабрикаXDTO.Тип(";, "string"); Так?
#21 by Serginio1
Если тип простой (строка,число, дата) то можно просто указать строку. Если сложный или AnyType то нужно через ТипСтрока = Прокси.ФабрикаXDTO.Тип(";, "string"); Все Out параметры должны идти последними в методе
#22 by hhhh
там вроде есть отладка, когда публикуешь веб-сервис, ставишь галку отладка и параметры задаешь. И потом прямо идешь отладчиком и попадаешь в веб сервис, смотришь все поля.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С