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