Помогите с Веб-сервисами

1. Flipp 06.12.18 07:24 Сейчас в теме
Добрый день. Впервой связываюсь с веб-сервисами. Помогите, кто уже сталкивался.
Стоит такая задача: выводить на форму тз с тремя колонками
-организация
-имя-веб сервиса (тип строка)
-Доступность (тип булево).

Веб-сервис опубликован, прописана в нем функция(все по инструкции). Вот только никак не соображу как к нему обратиться с формы внешней обработки и проставить галочки(истина) у тех веб-сервисов, которые доступны. Программа должна как-то в цикле обратиться к каждому из них, это я понимаю, а вот как это сделать в толк не возьму.

Пробую вот так.
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
		Попытка
		ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
		АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
		Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
		Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
		Прокси.Пользователь = Логин;
		Прокси.Пароль = Пароль;
		Возврат Прокси;
	Исключение
		Возврат Неопределено;
	КонецПопытки;	 
КонецФункции

Процедура ПриОткрытии()
	

	ПериодРегистрации = ТекущаяДата();
	МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");			

	Для Каждого Стр из ТЗ Цикл 			
		URIИмен = "http://srv-srv1/Serv";
		Логин = "Администратор";
		Пароль = "";
		ИмяВэбСервиса = Стр.ВебСервис;
		АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
		Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
		Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
	КонецЦикла;


КонецПроцедуры

Показать


ПолучитьОтчет - это имя процедуру в сервисе.
Я явно что-то делаю не так, но что именно сообразить не могу. Куча всяких статей просветления не добавили,если честно. Может, кто-то сможет объяснить, как это работает!?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. tvm 06.12.18 09:32 Сейчас в теме
2. sergathome 4 06.12.18 09:09 Сейчас в теме
И что не получилось ? Строки
        Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
в скобки Попытка-Исключение и, если нет исключения - доступно. Из функции ПолучитьПрокси скобки убрать.
+
4. Flipp 06.12.18 09:33 Сейчас в теме
(2)Пишет ошибку: ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(52)}: Значение не является значением объектного типа (CalcLengthString)
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
+
5. sergathome 4 06.12.18 09:38 Сейчас в теме
(4) Ну дык Прокси не получается, уберите скобки, как я сказал, поймайте реальную ошибку при получении прокси.. и тд и тп. Нельзя поставить диагноз глядя на портрет умирающего ;)
+
6. Flipp 06.12.18 09:45 Сейчас в теме
(5)Прости, я не понимаю, где добавить-убрать скобки!?
+
7. sergathome 4 06.12.18 09:52 Сейчас в теме
(6)
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
        ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
        АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
        Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
        Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции

Процедура ПриОткрытии()
    

    ПериодРегистрации = ТекущаяДата();
    МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");            

    Для Каждого Стр из ТЗ Цикл             
        URIИмен = "http://srv-srv1/Serv";
        Логин = "Администратор";
        Пароль = "";
        ИмяВэбСервиса = Стр.ВебСервис;
        АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
        Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
    КонецЦикла;


КонецПроцедуры
Показать


Какую теперь ошибку выдаёт ?
+
8. Flipp 06.12.18 10:00 Сейчас в теме
(7) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
Аутентификация пользователя не выполнена. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
+
9. sergathome 4 06.12.18 11:35 Сейчас в теме
(8) не аутентификацию считаем недоступность, очевидно (или как?) Таким образом получаем:
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
        ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
        АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
        Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
        Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции

Процедура ПриОткрытии()
    

    ПериодРегистрации = ТекущаяДата();
    МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");            

    Для Каждого Стр из ТЗ Цикл             
        URIИмен = "http://srv-srv1/Serv";
        Логин = "Администратор";
        Пароль = "";
        ИмяВэбСервиса = Стр.ВебСервис;
        АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
        Попытка
           Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
           Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
           Стр.Доступность = Истина;
        Исключение
           Стр.Доступность = Ложь;
        КонецПопытки;
    КонецЦикла;
Показать
+
10. Flipp 06.12.18 12:17 Сейчас в теме
(9)Перепроверили, но все равно ошибка

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
Код ответа сервера: 500

Может что-то не так с адресом веб-сервиса!?
+
12. sergathome 4 06.12.18 13:40 Сейчас в теме
(10) имя сервиса у вас ОТСУТСТВУЕТ. в УРЛ http://srv-srv1/kadri_all_test_kortes/ws/?wsdl между / и ? должен быть адрес сервиса.
Наймите специалиста, вам не дано. Извините. :(
Denis_CFO; +1
11. Flipp 06.12.18 12:21 Сейчас в теме
Если вынести адрес источника в спр. то возникает вот такая ошибка \
{ВнешняяОбработка.ВнешняяОбработка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Имен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции
Показать
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот