From f7a9d19c0e14c7fef3c7d64ac645e49202bf6a7e Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Sun, 23 Feb 2025 21:14:50 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=B7=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D0=BE=D0=BF=D1=86=D0=B8=D0=B8=20-F,=20--form=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=B7=D0=BD=D0=B0=D0=BA=D0=B0=20=3D=20=D0=B2=20=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...36\320\277\321\206\320\270\320\270Form.os" | 10 ++++-- ...\320\276\320\264\320\2601\320\241_test.os" | 35 ++++++++++++++++++- ...0\272\321\202\320\276\321\200HTTP_test.os" | 14 ++++++-- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\236\320\277\321\206\320\270\320\270Form.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\236\320\277\321\206\320\270\320\270Form.os" index 7a7d73b..eb2a355 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\236\320\277\321\206\320\270\320\270Form.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\321\201\320\265\321\200\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\236\320\277\321\206\320\270\320\270Form.os" @@ -55,8 +55,14 @@ ИначеЕсли ТипТокена = "ТочкаСЗапятой" Тогда ПроверитьИДобавитьПараметр(); ИначеЕсли ТипТокена = "Равенство" Тогда - БылРазделитель = Истина; - ЗначениеПараметра = ""; + Если БылРазделитель Тогда + ДополнитьЗначениемТокена(Токен); + Иначе + БылРазделитель = Истина; + ЗначениеПараметра = ""; + КонецЕсли; + Иначе + ВызватьИсключение "Ошибка при парсинге значения опции -F, --form"; КонецЕсли; КонецЦикла; diff --git "a/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\2601\320\241_test.os" "b/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\2601\320\241_test.os" index 4db29d3..eea35cb 100644 --- "a/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\2601\320\241_test.os" +++ "b/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\2601\320\241_test.os" @@ -1552,7 +1552,8 @@ |curl http://example13.com/ -F ""json=@data.json;headers=\""X-header: value\"""" |curl http://example14.com/ -F ""json=@data.json;headers=\""X-header-1: some value 1\"";headers=\""X-header-2: some value 2\"""" |curl http://example15.com/ --form-string name=data - |curl http://example16.com/ --form-string name=@data;type=some"; + |curl http://example16.com/ --form-string name=@data;type=some + |curl http://example17.com/ -F name=John= -F brief=doctor=111;type=text/foo"; ПрограммныйКод = "////////////////////////////////////////////// |// Команда #1. @@ -2007,6 +2008,38 @@ |ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок); |ЗаписьДанных.Закрыть(); | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос); + | + |////////////////////////////////////////////// + |// Команда #17. + | + |РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """"); + | + |Заголовки = Новый Соответствие(); + |Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart); + | + |Соединение = Новый HTTPСоединение(""example17.com"", 80); + |HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки); + |Поток = HTTPЗапрос.ПолучитьТелоКакПоток(); + | + |РазделительСтрок = Символы.ВК + Символы.ПС; + |ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """"); + |// Начало name + |ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name=""""name"""""" + РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(""John="" + РазделительСтрок); + |// Конец name + |// Начало brief + |ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name=""""brief"""""" + РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(""Content-Type: text/foo"" + РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + |ЗаписьДанных.ЗаписатьСтроку(""doctor=111"" + РазделительСтрок); + |// Конец brief + |ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок); + |ЗаписьДанных.Закрыть(); + | |HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"; ПроверитьКонвертациюБезОшибок(КонсольнаяКоманда, ПрограммныйКод); diff --git "a/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP_test.os" "b/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP_test.os" index 73df90f..2b45d98 100644 --- "a/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP_test.os" +++ "b/tests/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\263\320\276\320\232\320\276\320\264\320\260\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP_test.os" @@ -1056,7 +1056,8 @@ |curl http://example13.com/ -F ""json=@data.json;headers=\""X-header: value\"""" |curl http://example14.com/ -F ""json=@data.json;headers=\""X-header-1: some value 1\"";headers=\""X-header-2: some value 2\"""" |curl http://example15.com/ --form-string name=data - |curl http://example16.com/ --form-string name=@data;type=some"; + |curl http://example16.com/ --form-string name=@data;type=some + |curl http://example17.com/ -F name=John= -F brief=doctor=111;type=text/foo"; ПрограммныйКод = "////////////////////////////////////////////// |// Команда #1. @@ -1275,7 +1276,16 @@ |Данные = Новый Соответствие(); |Данные.Вставить(""name"", ""@data;type=some""); | - |Результат = КоннекторHTTP.Post(""http://example16.com"", Данные);"; + |Результат = КоннекторHTTP.Post(""http://example16.com"", Данные); + | + |////////////////////////////////////////////// + |// Команда #17. + | + |Данные = Новый Соответствие(); + |Данные.Вставить(""name"", ""John=""); + |Данные.Вставить(""brief"", ""doctor=111""); + | + |Результат = КоннекторHTTP.Post(""http://example17.com"", Данные);"; ПроверитьКонвертациюБезОшибок(КонсольнаяКоманда, ПрограммныйКод);