Snippets
Created by
Василий Котов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | Функция WSПрокси(Параметры)
АдресWSDL = Параметры.АдресWSDL;
URIПространстваИмен = Параметры.URIПространстваИмен;
ИмяСервиса = Параметры.ИмяСервиса;
ИмяТочкиПодключения = Параметры.ИмяТочкиПодключения;
ИмяПользователя = Параметры.ИмяПользователя;
Пароль = Параметры.Пароль;
Таймаут = Параметры.Таймаут;
Местоположение = Параметры.Местоположение;
ИспользоватьАутентификациюОС = Параметры.ИспользоватьАутентификациюОС;
ЗащищенноеСоединение = Параметры.ЗащищенноеСоединение;
Протокол = "";
Позиция = СтрНайти(АдресWSDL, "://");
Если Позиция > 0 Тогда
Протокол = НРег(Лев(АдресWSDL, Позиция - 1));
КонецЕсли;
Если (Протокол = "https" Или Протокол = "ftps") И ЗащищенноеСоединение = Неопределено Тогда
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
КонецЕсли;
WSОпределения = WSОпределения(АдресWSDL, ИмяПользователя, Пароль,, ЗащищенноеСоединение);
Если ПустаяСтрока(ИмяТочкиПодключения) Тогда
ИмяТочкиПодключения = ИмяСервиса + "Soap";
КонецЕсли;
ИнтернетПрокси = Неопределено;
Прокси = Новый WSПрокси(WSОпределения, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения,
ИнтернетПрокси, Таймаут, ЗащищенноеСоединение, Местоположение, ИспользоватьАутентификациюОС);
Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;
Возврат Прокси;
КонецФункции
Функция ПараметрыПодключенияWSПрокси()
Результат = Новый Структура;
Результат.Вставить("АдресWSDL");
Результат.Вставить("URIПространстваИмен");
Результат.Вставить("ИмяСервиса");
Результат.Вставить("ИмяТочкиПодключения", "");
Результат.Вставить("ИмяПользователя");
Результат.Вставить("Пароль");
Результат.Вставить("Таймаут", 0);
Результат.Вставить("Местоположение");
Результат.Вставить("ИспользоватьАутентификациюОС", Ложь);
Результат.Вставить("ДелатьКонтрольныйВызов", Ложь);
Результат.Вставить("ЗащищенноеСоединение", Неопределено);
Возврат Результат;
КонецФункции
// Конструктор объекта WSПрокси.
//
// Отличия от конструктора Новый WSПрокси:
// - встроенный конструктор WSОпределения;
// - кэширует файл WSDL;
// - не требуется указание ИнтернетПрокси (используется автоматически, если настроен);
// - умеет делать быструю проверку доступности сервиса.
//
// Параметры:
// ПереданныеПараметры - Структура - настройки подключения (необходимо использовать функцию ПараметрыПодключенияWSПрокси):
// * АдресWSDL - Строка - месторасположение wsdl.
// * URIПространстваИмен - Строка - URI пространства имен web-сервиса.
// * ИмяСервиса - Строка - имя сервиса.
// * ИмяТочкиПодключения - Строка - (необязательный) если не задано, образуется как <ИмяСервиса>Soap.
// * ИмяПользователя - Строка - (необязательный) имя пользователя для входа на сервер.
// * Пароль - Строка - (необязательный) пароль пользователя.
// * Таймаут - Число - (необязательный) таймаут на операции выполняемые через полученное прокси.
// * Местоположение - Строка - (необязательный) фактический адрес сервиса. Используется, если адрес реального
// расположения сервиса отличается от адреса, который указан в WSDL-файле.
// * ИспользоватьАутентификациюОС - Булево - (необязательный) включает использование авторизации NTLM или Negotiate на
// сервере.
// * ДелатьКонтрольныйВызов - Булево - (необязательный) выполнять проверку доступности сервиса (требуется
// поддержка этой команды веб-сервисом).
// * ЗащищенноеСоединение - ЗащищенноеСоединениеOpenSSL, Неопределено - (необязательный) параметры защищенного
// соединения.
//
// Возвращаемое значение:
// WSПрокси - объект WSПрокси.
//
Функция СоздатьWSПрокси(ПереданныеПараметры) Экспорт
ПараметрыПодключения = ПараметрыПодключенияWSПрокси();
ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ПереданныеПараметры);
ДелатьКонтрольныйВызов = ПараметрыПодключения.ДелатьКонтрольныйВызов;
Таймаут = ПараметрыПодключения.Таймаут;
Если ДелатьКонтрольныйВызов И Таймаут <> Неопределено И Таймаут > 20 Тогда
ПараметрыПодключения.Таймаут = 7;
WSПроксиPing = WSПрокси(ПараметрыПодключения);
Попытка
WSПроксиPing.Ping();
Исключение
АдресТочкиПодключения = WSПроксиPing.ТочкаПодключения.Местоположение;
ТекстОшибки = "Ошибка подкдючения";
ВызватьИсключение ТекстОшибки;
КонецПопытки;
ПараметрыПодключения.Таймаут = Таймаут;
КонецЕсли;
Возврат WSПрокси(ПараметрыПодключения);
КонецФункции
|
Comments (0)
You can clone a snippet to your computer for local editing. Learn more.