You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-24 19:49:22 +02:00
Доработка HTTP
This commit is contained in:
297
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
297
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -2643,6 +2643,12 @@
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
|
||||
HTTPКлиент_УстановитьДвоичноеТело(ПараметрыТеста);
|
||||
HTTPКлиент_УстановитьСтроковоеТело(ПараметрыТеста);
|
||||
HTTPКлиент_УстановитьJsonТело(ПараметрыТеста);
|
||||
HTTPКлиент_УстановитьFormТело(ПараметрыТеста);
|
||||
HTTPКлиент_НачатьЗаписьТелаMultipart(ПараметрыТеста);
|
||||
HTTPКлиент_ДобавитьПолеMultipartFormData(ПараметрыТеста);
|
||||
HTTPКлиент_ДобавитьФайлMultipartFormData(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -21072,7 +21078,11 @@
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
@@ -21130,7 +21140,11 @@
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
@@ -21184,7 +21198,11 @@
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
Адрес = "/get?param1=text¶m2=10";
|
||||
@@ -21400,7 +21418,11 @@
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТипДанных", "HTTPКлиент");
|
||||
@@ -21448,7 +21470,11 @@
|
||||
Результат["data"] = "...";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьДвоичноеТело", "HTTPКлиент");
|
||||
@@ -21462,6 +21488,265 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_УстановитьСтроковоеТело(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
Текст = "Привет мир!";
|
||||
Кодировка = "Windows-1251";
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.ИспользоватьКодировку(Кодировка)
|
||||
.УстановитьСтроковоеТело(Текст) // <---
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьСтроковоеТело", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["headers"]["Content-Type"]).Равно("text/plain; charset=" + Кодировка);
|
||||
|
||||
ТекстДД = ПолучитьДвоичныеДанныеИзСтроки(Текст, Кодировка);
|
||||
Размер = ТекстДД.Размер();
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Размер);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["headers"]["Content-Length"]).Равно(Размер);
|
||||
|
||||
ТекстB64 = "data:application/octet-stream;base64," + Base64Строка(ТекстДД);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["data"]).Равно(ТекстB64);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_УстановитьJsonТело(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
СлучайныйМассив = Новый Массив;
|
||||
СлучайныйМассив.Добавить("A");
|
||||
СлучайныйМассив.Добавить("B");
|
||||
СлучайныйМассив.Добавить("C");
|
||||
|
||||
Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив);
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.УстановитьJsonТело(Данные) // <---
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьСтроковоеТело", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["headers"]["Content-Type"]).Равно("application/json; charset=utf-8");
|
||||
|
||||
JSONРезультат = Результат["json"];
|
||||
JSONОригинал = Данные;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(JSONРезультат["Поле1"]).Равно(JSONОригинал["Поле1"]);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(JSONРезультат["Поле2"]).Равно(JSONОригинал["Поле2"]);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(JSONРезультат["Поле3"][0]).Равно(JSONОригинал["Поле3"][0]);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(JSONРезультат["Поле3"][1]).Равно(JSONОригинал["Поле3"][1]);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(JSONРезультат["Поле3"][2]).Равно(JSONОригинал["Поле3"][2]);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_УстановитьFormТело(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
Данные = Новый Структура("Поле1,Поле2", "10", "Текст");
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.УстановитьFormТело(Данные) // <---
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьFormТело", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["headers"]["Content-Type"]).Равно("application/x-www-form-urlencoded; charset=utf-8");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле1"]).Равно(Данные["Поле1"]);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле2"]).Равно(Данные["Поле2"]);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_НачатьЗаписьТелаMultipart(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.НачатьЗаписьТелаMultipart() // <---
|
||||
.ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png")
|
||||
.ДобавитьПолеMultipartFormData("Поле1", "Текст")
|
||||
.ДобавитьПолеMultipartFormData("Поле2", "10")
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
ФайлОтвета = Результат["files"]["file1"];
|
||||
Результат["files"]["file1"] = "...";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "НачатьЗаписьТелаMultipart", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СтрНачинаетсяС(Результат["headers"]["Content-Type"], "multipart/")).Равно(Истина);
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
|
||||
ТекстB64 = "data:image/png;base64," + Base64Строка(Картинка);
|
||||
ТекстB64 = СтрЗаменить(ТекстB64, Символы.ВК + Символы.ПС, "");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле1"]).Равно("Текст");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле2"]).Равно("10");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ФайлОтвета).Равно(ТекстB64);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_ДобавитьФайлMultipartFormData(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.НачатьЗаписьТелаMultipart()
|
||||
.ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") // <---
|
||||
.ДобавитьПолеMultipartFormData("Поле1", "Текст")
|
||||
.ДобавитьПолеMultipartFormData("Поле2", "10")
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
ФайлОтвета = Результат["files"]["file1"];
|
||||
Результат["files"]["file1"] = "...";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьФайлMultipartFormData", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СтрНачинаетсяС(Результат["headers"]["Content-Type"], "multipart/")).Равно(Истина);
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
|
||||
ТекстB64 = "data:image/png;base64," + Base64Строка(Картинка);
|
||||
ТекстB64 = СтрЗаменить(ТекстB64, Символы.ВК + Символы.ПС, "");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле1"]).Равно("Текст");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле2"]).Равно("10");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ФайлОтвета).Равно(ТекстB64);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_ДобавитьПолеMultipartFormData(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/post";
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать(URL)
|
||||
.НачатьЗаписьТелаMultipart()
|
||||
.ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png")
|
||||
.ДобавитьПолеMultipartFormData("Поле1", "Текст") // <---
|
||||
.ДобавитьПолеMultipartFormData("Поле2", "10") // <---
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
// END
|
||||
|
||||
Попытка
|
||||
Результат["origin"] = "***";
|
||||
ФайлОтвета = Результат["files"]["file1"];
|
||||
Результат["files"]["file1"] = "...";
|
||||
Исключение
|
||||
Сообщить("Не удалось заменить origin");
|
||||
|
||||
Попытка
|
||||
Сообщить(Результат.ПолучитьЛог(Истина));
|
||||
Исключение
|
||||
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Результат));
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьПолеMultipartFormData", "HTTPКлиент");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СтрНачинаетсяС(Результат["headers"]["Content-Type"], "multipart/")).Равно(Истина);
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
|
||||
ТекстB64 = "data:image/png;base64," + Base64Строка(Картинка);
|
||||
ТекстB64 = СтрЗаменить(ТекстB64, Символы.ВК + Символы.ПС, "");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле1"]).Равно("Текст");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["form"]["Поле2"]).Равно("10");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ФайлОтвета).Равно(ТекстB64);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os
|
||||
// OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -294,6 +294,48 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Настройки
|
||||
|
||||
Функция ИспользоватьКодировку(Знач Кодировка) Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
|
||||
|
||||
ДобавитьЛог("ИспользоватьКодировку: Установка значения");
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
|
||||
|
||||
УстановитьНастройку("КодировкаТелаЗапроса", Кодировка);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИспользоватьСжатиеGzip(Знач Флаг) Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
|
||||
|
||||
ДобавитьЛог("ИспользоватьСжатиеGzip: Установка значения");
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг);
|
||||
|
||||
УстановитьНастройку("gzip", Флаг);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область УстановкаТела
|
||||
|
||||
// Установить двоичное тело !NOCLI
|
||||
@@ -350,12 +392,11 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Данные - Строка - Данные тела запроса - data
|
||||
// Кодировка - Строка - Кодировка строки - enc
|
||||
// ЗаписатьBOM - Булево - Истина > BOM будет добавлен - bom
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция УстановитьСтроковоеТело(Знач Данные, Знач Кодировка = "UTF-8", Знач ЗаписатьBOM = Ложь) Экспорт
|
||||
Функция УстановитьСтроковоеТело(Знач Данные, Знач ЗаписатьBOM = Ложь) Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
@@ -368,12 +409,16 @@
|
||||
Возврат ЭтотОбъект;
|
||||
КонецЕсли;
|
||||
|
||||
Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса");
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
|
||||
|
||||
Если Не ЗапросТипУстановленВручную Тогда
|
||||
ЗапросТипДанных = "text/plain; charset=utf-8";
|
||||
ЗапросТипДанных = СтрШаблон("text/plain; charset=%1", Кодировка);
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьЛог("УстановитьСтроковоеТело: Начало установки тела");
|
||||
УстановитьТелоИзСтроки(Данные, Кодировка, ЗаписатьBOM);
|
||||
УстановитьТелоИзСтроки(Данные, ЗаписатьBOM);
|
||||
ДобавитьЛог(СтрШаблон("УстановитьСтроковоеТело: Тело установлено, размер %1", ЗапросТело.Размер()));
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
@@ -500,7 +545,8 @@
|
||||
Multipart = Истина;
|
||||
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
|
||||
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||
ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2", Вид, Boundary);
|
||||
Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса");
|
||||
ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2; charset=%3", Вид, Boundary, Кодировка);
|
||||
|
||||
Если ИспользоватьФайл Тогда
|
||||
|
||||
@@ -509,7 +555,7 @@
|
||||
ЗапросФайлТела = ПолучитьИмяВременногоФайла();
|
||||
ФайлТелаВременный = Истина;
|
||||
ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросФайлТела
|
||||
, КодировкаТекста.UTF8
|
||||
, Кодировка
|
||||
, ПорядокБайтов.LittleEndian
|
||||
, ""
|
||||
, Ложь
|
||||
@@ -523,13 +569,12 @@
|
||||
ЗапросПотокТела = Новый ПотокВПамяти();
|
||||
|
||||
ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросПотокТела
|
||||
, КодировкаТекста.UTF8
|
||||
, Кодировка
|
||||
, ПорядокБайтов.LittleEndian
|
||||
, ""
|
||||
, ""
|
||||
, Ложь);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
@@ -1090,7 +1135,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
|
||||
Если КодироватьURL Тогда
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL);
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -1108,9 +1153,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УстановитьТелоИзСтроки(Знач Значение, Знач Кодировка = "UTF-8", Знач ЗаписатьBOM = Ложь)
|
||||
Функция УстановитьТелоИзСтроки(Знач Значение, Знач ЗаписатьBOM = Ложь)
|
||||
|
||||
Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса");
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ЗаписатьBOM);
|
||||
|
||||
@@ -1423,12 +1469,21 @@
|
||||
|
||||
Функция ПолучитьТелоОтвета()
|
||||
|
||||
GZip = "gzip";
|
||||
НужнаРаспаковка = Ложь;
|
||||
|
||||
Заголовок1 = Ответ.Заголовки.Получить("Content-Encoding");
|
||||
Заголовок2 = Ответ.Заголовки.Получить("content-encoding");
|
||||
Для Каждого ЗаголовокОтвета Из Ответ.Заголовки Цикл
|
||||
|
||||
НужнаРаспаковка = Заголовок1 = GZip Или Заголовок2 = GZip;
|
||||
КлючЗаголовка = ЗаголовокОтвета.Ключ;
|
||||
ЗначениеЗаголовка = ЗаголовокОтвета.Значение;
|
||||
|
||||
Если нРег(КлючЗаголовка) = "content-encoding" Тогда
|
||||
Если нРег(ЗначениеЗаголовка) = "gzip" Тогда
|
||||
НужнаРаспаковка = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НужнаРаспаковка Тогда
|
||||
Данные = РаспаковатьОтвет(Ответ);
|
||||
@@ -2121,12 +2176,17 @@
|
||||
Возврат Настройки[КлючНастройки];
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьНастройку(Знач КлючНастройки, Знач Значение)
|
||||
Настройки[КлючНастройки] = Значение;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСтандартныеНастройки()
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("gzip" , Истина);
|
||||
Настройки.Вставить("ОтдельныеЭлементыМассивов", Ложь);
|
||||
Настройки.Вставить("КодировкаURL" , Истина);
|
||||
Настройки.Вставить("КодировкаТелаЗапроса" , "UTF-8");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
Reference in New Issue
Block a user