Skip to content

Commit

Permalink
Исправление раскодировки параметров запроса (#78)
Browse files Browse the repository at this point in the history
  • Loading branch information
Stivo182 committed Jan 2, 2025
1 parent 2f5d74e commit aed17ac
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/Классы/ПарсерЗапросов.os
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@
Результат.Вставить("Метод", ПерваяСтрока[0]);
Результат.Вставить("ПолныйПуть", РаскодироватьСтроку(ПерваяСтрока[1],СпособКодированияСтроки.КодировкаURL));

ПутьИПараметры = Парсеры.РазделитьСтроку(Результат.ПолныйПуть, "?");
ПутьИПараметры = Парсеры.РазделитьСтроку(ПерваяСтрока[1], "?");

Результат.Вставить("ПараметрыИменные", Парсеры.ПараметрыИзТекста(ПутьИПараметры.Право));
Результат.Вставить("Путь", ПутьИПараметры.Лево);
Результат.Вставить("Путь", РаскодироватьСтроку(ПутьИПараметры.Лево, СпособКодированияСтроки.КодировкаURL));

Заголовки = Новый Соответствие();
Результат.Вставить("Заголовки", Заголовки);
Expand Down
6 changes: 4 additions & 2 deletions src/Классы/Парсеры.os
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
Результат = Новый Соответствие();

Если ЗначениеЗаполнено(ПараметрыТекстом) Тогда
МассивПараметров = СтрРазделить(РаскодироватьСтроку(ПараметрыТекстом, СпособКодированияСтроки.КодировкаURL), РазделительПараметров, Ложь);
МассивПараметров = СтрРазделить(ПараметрыТекстом, РазделительПараметров, Ложь);
Для Каждого ТекПараметрСтрокой из МассивПараметров Цикл
ТекПараметр = РазделитьСтроку(ТекПараметрСтрокой, "=");
Результат.Вставить(ТекПараметр.Лево, ТекПараметр.Право);
Имя = РаскодироватьСтроку(ТекПараметр.Лево, СпособКодированияСтроки.КодировкаURL);
Значение = РаскодироватьСтроку(ТекПараметр.Право, СпособКодированияСтроки.КодировкаURL);
Результат.Вставить(Имя, Значение);
КонецЦикла;
КонецЕсли;

Expand Down
15 changes: 15 additions & 0 deletions tests/alltest.os
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@

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

&Тест
Процедура Должен_ПроверитьОбработкуЗакодированныхРазделителейВГетПараметрах() Экспорт

// Дано
АдресТеста = "getparams?animal1=Кошка&animal2=Собака%26Хомяк";

// Когда
Ответ = ГетЗапрос(АдресТеста);

// Тогда
Ожидаем.Что(Ответ.КодСостояния).Равно(200);
Ожидаем.Что(Ответ.ПолучитьТелоКакСтроку()).Равно("Кошка И Собака&Хомяк");

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

&Тест
Процедура Должен_ПроверитьОбработкуУпорядоченныхГетПараметров() Экспорт

Expand Down

0 comments on commit aed17ac

Please sign in to comment.