Добрый день. Впервой связываюсь с веб-сервисами. Помогите, кто уже сталкивался.
Стоит такая задача: выводить на форму тз с тремя колонками
-организация
-имя-веб сервиса (тип строка)
-Доступность (тип булево).
Веб-сервис опубликован, прописана в нем функция(все по инструкции). Вот только никак не соображу как к нему обратиться с формы внешней обработки и проставить галочки(истина) у тех веб-сервисов, которые доступны. Программа должна как-то в цикле обратиться к каждому из них, это я понимаю, а вот как это сделать в толк не возьму.
Пробую вот так.
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
Попытка
ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;
Возврат Прокси;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции
Процедура ПриОткрытии()
ПериодРегистрации = ТекущаяДата();
МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");
Для Каждого Стр из ТЗ Цикл
URIИмен = "http://srv-srv1/Serv";
Логин = "Администратор";
Пароль = "";
ИмяВэбСервиса = Стр.ВебСервис;
АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
КонецЦикла;
КонецПроцедуры
Показать
ПолучитьОтчет - это имя процедуру в сервисе.
Я явно что-то делаю не так, но что именно сообразить не могу. Куча всяких статей просветления не добавили,если честно. Может, кто-то сможет объяснить, как это работает!?
(2)Пишет ошибку: ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(52)}: Значение не является значением объектного типа (CalcLengthString)
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
(4) Ну дык Прокси не получается, уберите скобки, как я сказал, поймайте реальную ошибку при получении прокси.. и тд и тп. Нельзя поставить диагноз глядя на портрет умирающего ;)
(7) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
Аутентификация пользователя не выполнена. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl Код ответа сервера: 500
Если вынести адрес источника в спр. то возникает вот такая ошибка \
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(65)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/ ?wsdl
Код ответа сервера: 400
?wsdl - это ему не нравится!?
Для Каждого Стр из ТЗ Цикл
URIИмен = "http://srv-srv1/ServFLY";
Логин = "Администратор";
Пароль = "Rfptvbhvftdbx";
ИмяВэбСервиса = Стр.ВебСервис;
//АдресИсточника = "http://srv-srv1/kadri_all_test_kortes/ws/";
АдресИсточника = Справочники.Константы.АдресИсточника.Описание;
Прокси = ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса);
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
КонецЦикла;
КонецПроцедуры
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;
Возврат Прокси;
КонецФункции