diff --git a/README.md b/README.md index 26ba69b..8c38278 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,11 @@ - Отправка данных формы (полей формы), `application/x-www-form-urlencoded` - Отправка данных формы (полей формы и файлов), `multipart/form-data` - Прозрачная поддержка ответов, закодированных `GZip` -- `Basic` и `Digest` аутентификация +- `Basic`, `Digest` и `AWS4-HMAC-SHA256` аутентификация - Автоматическое разрешение редиректов - Установка и чтение Cookies - Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.) +- Переиспользование `HTTPСоединение` в рамках сессии - И многое другое ## Требования @@ -95,7 +96,7 @@ ```bsl Заголовки = Новый Соответствие; Заголовки.Вставить("X-My-Header", "Hello!!!"); -Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers",, Новый Структура("Заголовки", Заголовки)); +Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Заголовки", Заголовки)); ``` ## Работа с JSON @@ -138,7 +139,7 @@ Файлы.Вставить("Данные", Base64Значение("0J/RgNC40LLQtdGCINCc0LjRgCE=")); Файлы.Вставить("Тип", "text/plain"); -Результат = КоннекторHTTP.PostJson("https://httpbin.org/post",, Новый Структура("Файлы", Файлы)); +Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы", Файлы)); ``` Файл будет закодирован в теле запроса, заголовку `Content-Type` автоматически установлено значение `multipart/form-data`. @@ -152,11 +153,33 @@ Данные = Новый Структура("field1,field2", "value1", "Значение2"); -Результат = КоннекторHTTP.PostJson("https://httpbin.org/post",, Новый Структура("Файлы,Данные", Файлы, Данные)); +Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы,Данные", Файлы, Данные)); ``` Файлы и данные формы будут закодированы в теле запроса, заголовку `Content-Type` автоматически установлено значение `multipart/form-data`. +## Отправка произвольных данных +Чтобы отправить произвольные данные (`Строка`, `ДвоичныеДанные`) их нужно передать в параметре `Данные`. +```bsl +XML = +" +| +| +| +| 2019-07-05 +| +| +|"; + +Заголовки = Новый Соответствие; +Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8"); +Заголовки.Вставить("SOAPAction", "http://web.cbr.ru/GetCursOnDate"); +Ответ = КоннекторHTTP.Post( + "https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx", + XML, + Новый Структура("Заголовки", Заголовки)); +``` + ## Содержимое ответа Методы, которые не заканчиваются на Json, созвращают ответ в виде `Структура`: - `ВремяВыполнения` - Число - время выполнения запроса в миллисекундах @@ -201,7 +224,7 @@ ## Таймаут Таймаут можно задать в параметре `ДополнительныеПараметры.Таймаут`. ```bsl -Ответ = КоннекторHTTP.Get("https://httpbin.org/delay/10",, Новый Структура("Таймаут", 1)); +Ответ = КоннекторHTTP.Get("https://httpbin.org/delay/10", Неопределено, Новый Структура("Таймаут", 1)); ``` Значение по умолчанию - 30 сек. @@ -210,7 +233,8 @@ ```bsl Аутентификация = Новый Структура("Пользователь, Пароль", "user", "pass"); Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/basic-auth/user/pass",, + "https://httpbin.org/basic-auth/user/pass", + Неопределено, Новый Структура("Аутентификация", Аутентификация)); ``` или в `URL` @@ -224,16 +248,43 @@ ```bsl Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "user", "pass", "Digest"); Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/digest-auth/auth/user/pass",, + "https://httpbin.org/digest-auth/auth/user/pass", + Неопределено, Новый Структура("Аутентификация", Аутентификация)); ``` +## AWS4-HMAC-SHA256-аутентификация +Параметры AWS4-HMAC-SHA256-аутентификации можно передать в параметре `ДополнительныеПараметры.Аутентификация`. +При этом `Тип` нужно установить в значение `AWS4-HMAC-SHA256` и задать свойства: `ИдентификаторКлючаДоступа`, `СекретныйКлюч`, `Сервис`, `Регион`. + +```bsl +Аутентификация = Новый Структура; +Аутентификация.Вставить("Тип", "AWS4-HMAC-SHA256"); +Аутентификация.Вставить("ИдентификаторКлючаДоступа", "AKIAU00002SQ4MT"); +Аутентификация.Вставить("СекретныйКлюч", "МойСекретныйКлюч"); +Аутентификация.Вставить("Регион", "ru-central1"); +Аутентификация.Вставить("Сервис", "s3"); + +Файл = Новый ДвоичныеДанные("my_file.txt"); + +Заголовки = Новый Соответствие; +Заголовки.Вставить("Content-Type", "text/plain"); +Заголовки.Вставить("x-amz-meta-author", "Vladimir Bondarevskiy"); +Заголовки.Вставить("Expect", "100-continue"); + +ДополнительныеПараметры = Новый Структура; +ДополнительныеПараметры.Вставить("Заголовки", Заголовки); +ДополнительныеПараметры.Вставить("Аутентификация", Аутентификация); +ДополнительныеПараметры.Вставить("Таймаут", 300); +Ответ = КоннекторHTTP.Put("https://test.storage.yandexcloud.net/my_file.txt", Файл, ДополнительныеПараметры); +``` + ## Доступ через прокси-сервер Настройки прокси можно передать в параметре `ДополнительныеПараметры.Прокси`. ```bsl Прокси = Новый ИнтернетПрокси; Прокси.Установить("http", "192.168.1.51", 8192); -КоннекторHTTP.GetJson("http://httpbin.org/headers",,, Новый Структура("Прокси", Прокси)); +КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Прокси", Прокси)); ``` Если в конфигурации используется `БСП`, то настройки прокси по умолчанию берутся из `БСП`. @@ -257,7 +308,7 @@ Отключить автоматический редирект можно с помощью параметра `ДополнительныеПараметры.РазрешитьПеренаправление`. -## Проверка сервернего сертификата SSL +## Проверка серверного сертификата SSL Нужно ли проверять сертификат сервера и какие корневые сертификаты для этого использовать можно задать через параметр `ДополнительныеПараметры.ПроверятьSSL`. ```bsl Результат = КоннекторHTTP.Get("https://my_super_secret_server.ru/", Новый Структура("ПроверятьSSL", Ложь)); @@ -279,7 +330,7 @@ Cookies = Новый Массив; Cookies.Добавить(Новый Структура("Наименование,Значение", "k1", Строка(Новый УникальныйИдентификатор))); Cookies.Добавить(Новый Структура("Наименование,Значение", "k2", Строка(Новый УникальныйИдентификатор))); -Ответ = КоннекторHTTP.Get("http://httpbin.org/cookies",, Новый Структура("Cookies", Cookies)); +Ответ = КоннекторHTTP.Get("http://httpbin.org/cookies", Неопределено, Новый Структура("Cookies", Cookies)); ``` ## Работа в рамках сессии