|
56 | 56 | НовыйURL = БазовыйURL + НовыйURL; |
57 | 57 | КонецЕсли; |
58 | 58 | ПодготовленныйЗапрос.URL = КодироватьСтроку(НовыйURL, СпособКодированияСтроки.URLВКодировкеURL); |
59 | | - ПодготовленныйЗапрос.HTTPЗапрос.АдресРесурса = СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено); |
60 | | - |
| 59 | + НовыйHTTPЗапрос = Новый HTTPЗапрос(СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено)); |
61 | 60 | ПереопределитьМетод(ПодготовленныйЗапрос, Ответ); |
62 | 61 |
|
63 | 62 | // https://github.com/requests/requests/issues/1084 |
64 | 63 | Если Ответ.КодСостояния <> 307 И Ответ.КодСостояния <> 308 Тогда |
65 | 64 | // https://github.com/requests/requests/issues/3490 |
66 | | - ПодготовленныйЗапрос.HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Base64Значение("")); |
67 | 65 | ЗаголовкиДляУдаления = Новый Массив; |
68 | 66 | Заголовки = СтрРазделить("content-length,content-type,transfer-encoding", ",", Ложь); |
69 | 67 | Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл |
|
74 | 72 | Для Каждого ЗаголовокДляУдаления Из ЗаголовкиДляУдаления Цикл |
75 | 73 | ПодготовленныйЗапрос.Заголовки.Удалить(ЗаголовокДляУдаления); |
76 | 74 | КонецЦикла; |
77 | | - ПодготовленныйЗапрос.HTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки; |
| 75 | + НовыйHTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки; |
| 76 | + Иначе |
| 77 | + НовыйHTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПодготовленныйЗапрос.HTTPЗапрос.ПолучитьТелоКакДвоичныеДанные()); |
78 | 78 | КонецЕсли; |
| 79 | + ПодготовленныйЗапрос.HTTPЗапрос = НовыйHTTPЗапрос; |
79 | 80 | Для Каждого Заголовок Из ПодготовленныйЗапрос.Заголовки Цикл |
80 | 81 | Если НРег(Заголовок.Ключ) = "cookie" Тогда |
81 | 82 | ПодготовленныйЗапрос.Заголовки.Удалить(Заголовок.Ключ); |
|
210 | 211 | Продолжить; |
211 | 212 | КонецЕсли; |
212 | 213 | // INFO: проверка срока действия игнорируется (Наименование.Значение.СрокДействия) |
213 | | - Если ЗначениеЗаполнено(Наименование.Значение.Порт) Тогда |
214 | | - // INFO: проверка порта игнорируется |
215 | | - КонецЕсли; |
| 214 | + // INFO: проверка порта игнорируется |
216 | 215 |
|
217 | 216 | Результат.Добавить(Наименование.Значение); |
218 | 217 | КонецЦикла; |
|
376 | 375 | Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); |
377 | 376 | РазделительСтрок = Символы.ВК + Символы.ПС; |
378 | 377 |
|
| 378 | + ПотокДанных = Новый ПотокВПамяти(); |
379 | 379 | ЗаписьДанных = Новый ЗаписьДанных( |
380 | | - HTTPЗапрос.ПолучитьТелоКакПоток(), |
| 380 | + ПотокДанных, |
381 | 381 | КодировкаТекста.UTF8, |
382 | 382 | ПорядокБайтов.LittleEndian, |
383 | 383 | "", |
|
394 | 394 | ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); |
395 | 395 | КонецЦикла; |
396 | 396 | ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--" + РазделительСтрок); |
| 397 | + HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ПотокДанных.ЗакрытьИПолучитьДвоичныеДанные()); |
397 | 398 | ЗаписьДанных.Закрыть(); |
398 | | - |
| 399 | + |
399 | 400 | Возврат СтрШаблон("multipart/form-data; boundary=%1", Разделитель); |
400 | 401 |
|
401 | 402 | КонецФункции |
|
635 | 636 |
|
636 | 637 | Функция КонструкторCookie(Наименование = "", Значение = Неопределено) |
637 | 638 |
|
638 | | - Возврат Новый Структура( |
639 | | - "Наименование, Значение, Домен, Путь, Порт, СрокДействия, ТолькоБезопасноеСоединение", |
640 | | - Наименование, |
641 | | - Значение, |
642 | | - "", |
643 | | - ""); |
| 639 | + Cookie = Новый Структура; |
| 640 | + Cookie.Вставить("Наименование", Наименование); |
| 641 | + Cookie.Вставить("Значение", Значение); |
| 642 | + Cookie.Вставить("Домен", ""); |
| 643 | + Cookie.Вставить("Путь", ""); |
| 644 | + Cookie.Вставить("Порт", Неопределено); |
| 645 | + Cookie.Вставить("СрокДействия", Неопределено); |
| 646 | + Cookie.Вставить("ТолькоБезопасноеСоединение", Неопределено); |
| 647 | + |
| 648 | + Возврат Cookie; |
644 | 649 |
|
645 | 650 | КонецФункции |
646 | 651 |
|
|
832 | 837 | Пароль = Аутентификация.Пароль; |
833 | 838 | КонецЕсли; |
834 | 839 |
|
835 | | - Возврат Новый HTTPСоединение( |
| 840 | + Соединение = Новый HTTPСоединение( |
836 | 841 | ПараметрыСоединения.Схема + "://" + ПараметрыСоединения.Сервер, |
837 | 842 | ПараметрыСоединения.Порт, |
838 | 843 | Пользователь, Пароль, |
839 | 844 | ДополнительныеПараметры.Прокси, |
840 | | - ДополнительныеПараметры.Таймаут); |
| 845 | + ДополнительныеПараметры.Таймаут); |
| 846 | + |
| 847 | + // Хак для обратной совместимости с версией oscript без свойства РазрешитьАвтоматическоеПеренаправление |
| 848 | + ЗаполнитьЗначенияСвойств(Соединение, Новый Структура("РазрешитьАвтоматическоеПеренаправление", Ложь)); |
841 | 849 |
|
| 850 | + Возврат Соединение; |
| 851 | + |
842 | 852 | КонецФункции |
843 | 853 |
|
844 | 854 | Функция ВыбратьЗначение(Значение1, Значение2, Ключ, ЗначениеПоУмолчанию) |
|
905 | 915 |
|
906 | 916 | Функция РазобратьURL(Знач URL) |
907 | 917 |
|
| 918 | + ДопустимыеСхемы = СтрРазделить("http,https", ","); |
| 919 | + |
908 | 920 | Схема = ""; |
909 | | - РазбитьСтрокуПоРазделителю(Схема, URL, "://"); |
| 921 | + URLБезСхемы = URL; |
| 922 | + РазбитьСтрокуПоРазделителю(Схема, URLБезСхемы, "://"); |
| 923 | + Если ДопустимыеСхемы.Найти(НРег(Схема)) <> Неопределено Тогда |
| 924 | + URL = URLБезСхемы; |
| 925 | + Иначе |
| 926 | + Схема = ""; |
| 927 | + КонецЕсли; |
910 | 928 |
|
911 | 929 | Путь = ""; |
912 | 930 | Результат = РазделитьПоПервомуНайденномуРазделителю(URL, СтрРазделить("/,?,#", ",")); |
|
0 commit comments