1
0
mirror of https://github.com/vbondarevsky/Connector.git synced 2024-11-28 08:58:44 +02:00

Добавление информацию по новых возможностям

This commit is contained in:
Vladimir Bondarevskiy 2019-10-13 04:22:22 +03:00
parent 4025d2e8d5
commit 237347f4c5
No known key found for this signature in database
GPG Key ID: E3B220A09083E7A2

View File

@ -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 =
"<?xml version=""1.0"" encoding=""utf-8""?>
|<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
| <soap:Body>
| <GetCursOnDate xmlns=""http://web.cbr.ru/"">
| <On_date>2019-07-05</On_date>
| </GetCursOnDate>
| </soap:Body>
|</soap:Envelope>";
Заголовки = Новый Соответствие;
Заголовки.Вставить("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));
```
## Работа в рамках сессии