mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-27 02:43:54 +02:00
TCP: Обработать запрос
This commit is contained in:
parent
fd628d98be
commit
1556e87119
File diff suppressed because it is too large
Load Diff
@ -194,48 +194,40 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Подключиться и получить данные
|
||||
// Создает соединение и читает данные до конца или по ограничениям
|
||||
//
|
||||
// Примечание:
|
||||
// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^
|
||||
// бесконечное получение данных может привести к зависанию
|
||||
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
|
||||
// ОбработатьЗапрос
|
||||
// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - Адрес и порт для подключения - address
|
||||
// МаксимальныйРазмер - Число - Максимальный размер данных. 0 > без ограничений - size
|
||||
// Таймаут - Число - Таймаут ожидания данных - timeout
|
||||
// Строкой - Булево - Истина > возвращает строку, Ложь > двоичные данные - string
|
||||
// Кодировка - Строка - Кодировка получаемых данных - enc
|
||||
// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data
|
||||
// ОтветСтрокой - Булево - Признак получения ответа как строки - string
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка, ДвоичныеДанные - Полученные данные
|
||||
Функция ПодключитьсяИПолучитьДанные(Знач Адрес
|
||||
, Знач МаксимальныйРазмер = 0
|
||||
, Знач Таймаут = 5000
|
||||
, Знач Строкой = Истина
|
||||
, Знач Кодировка = "UTF-8") Экспорт
|
||||
// ДвоичныеДанные, Строка - ответ на запрос
|
||||
Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Строкой);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой);
|
||||
|
||||
Соединение = ОткрытьСоединение(Адрес);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Соединение) Тогда
|
||||
ВызватьИсключение "Не удалось создать Соединение";
|
||||
КонецЕсли;
|
||||
Результат = ОтправитьДвоичныеДанные(Соединение, Данные);
|
||||
|
||||
Сообщение = ПрочитатьДвоичныеДанные(Соединение, МаксимальныйРазмер, Таймаут);
|
||||
Если Результат Тогда
|
||||
|
||||
Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС);
|
||||
Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ);
|
||||
|
||||
Иначе
|
||||
|
||||
Ответ = "OPI: Не удалось отправить сообщение";
|
||||
Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ));
|
||||
|
||||
Если Строкой Тогда
|
||||
Сообщение = ПолучитьСтрокуИзДвоичныхДанных(Сообщение, Кодировка);
|
||||
КонецЕсли;
|
||||
|
||||
ЗакрытьСоединение(Соединение);
|
||||
|
||||
Возврат Сообщение;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
#Использовать "./internal"
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
||||
Процедура ПолучитьДвоичныеДанные(Значение, Знач Безусловно = Ложь) Экспорт
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат;
|
||||
@ -69,7 +69,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
|
||||
Если Безусловно Тогда
|
||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||
Значение = ПолучитьДвоичныеДанныеИзСтроки(Значение);
|
||||
Иначе
|
||||
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -194,48 +194,40 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Подключиться и получить данные
|
||||
// Создает соединение и читает данные до конца или по ограничениям
|
||||
//
|
||||
// Примечание:
|
||||
// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^
|
||||
// бесконечное получение данных может привести к зависанию
|
||||
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
|
||||
// ОбработатьЗапрос
|
||||
// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - Адрес и порт для подключения - address
|
||||
// МаксимальныйРазмер - Число - Максимальный размер данных. 0 > без ограничений - size
|
||||
// Таймаут - Число - Таймаут ожидания данных - timeout
|
||||
// Строкой - Булево - Истина > возвращает строку, Ложь > двоичные данные - string
|
||||
// Кодировка - Строка - Кодировка получаемых данных - enc
|
||||
// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data
|
||||
// ОтветСтрокой - Булево - Признак получения ответа как строки - string
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка, ДвоичныеДанные - Полученные данные
|
||||
Функция ПодключитьсяИПолучитьДанные(Знач Адрес
|
||||
, Знач МаксимальныйРазмер = 0
|
||||
, Знач Таймаут = 5000
|
||||
, Знач Строкой = Истина
|
||||
, Знач Кодировка = "UTF-8") Экспорт
|
||||
// ДвоичныеДанные, Строка - Ответ на запрос
|
||||
Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Строкой);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой);
|
||||
|
||||
Соединение = ОткрытьСоединение(Адрес);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Соединение) Тогда
|
||||
ВызватьИсключение "Не удалось создать Соединение";
|
||||
КонецЕсли;
|
||||
Результат = ОтправитьДвоичныеДанные(Соединение, Данные);
|
||||
|
||||
Сообщение = ПрочитатьДвоичныеДанные(Соединение, МаксимальныйРазмер, Таймаут);
|
||||
Если Результат Тогда
|
||||
|
||||
Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС);
|
||||
Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ);
|
||||
|
||||
Иначе
|
||||
|
||||
Ответ = "OPI: Не удалось отправить сообщение";
|
||||
Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ));
|
||||
|
||||
Если Строкой Тогда
|
||||
Сообщение = ПолучитьСтрокуИзДвоичныхДанных(Сообщение, Кодировка);
|
||||
КонецЕсли;
|
||||
|
||||
ЗакрытьСоединение(Соединение);
|
||||
|
||||
Возврат Сообщение;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
// #Использовать "./internal"
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
||||
Процедура ПолучитьДвоичныеДанные(Значение, Знач Безусловно = Ложь) Экспорт
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат;
|
||||
@ -69,7 +69,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
|
||||
Если Безусловно Тогда
|
||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||
Значение = ПолучитьДвоичныеДанныеИзСтроки(Значение);
|
||||
Иначе
|
||||
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
Loading…
Reference in New Issue
Block a user