HTTP-запит

Щоб додати цей приклад, спочатку пояснюються всі основи HTTP. Це важливо для розуміння роботи інтерфейсу.

Основи

Наступні пункти слід обов'язково враховувати:

  • При запиті через HTTP клієнт встановлює з’єднання, поки сервер не розірве його.
  • Запит здійснюється через TCP на порт 80 (HTTP без шифрування) і на порт 443 (HTTPS з шифруванням).
  • Якщо використовується порт 80 з http:// або порт 443 з https://, то номер порту не відображається.
  • З HTTP/1.1 шар з’єднання такий, що з’єднання тримається відкритим деякий час, щоб уникнути рукостискання TCP. Це не видно в моніторі Antcas. Однак після тайм-ауту з’єднання закривається клієнтом, тобто сервером Antcas. Тому тайм-аут повинен бути відповідно високим.
  • Кожен запит повністю сумісний зі старішими версіями. Чи підтримує сервер HTTP/1.0, HTTP/1.1 або HTTP/2, не має значення.
  • Заголовок не чутливий до регістру. Це означає, що велика та мала літери не мають значення. Однак деякі виробники не дотримуються цього правила.
  • Кодування символів в Antcas Control завжди UTF-8. Якщо використовуються інші кодування, їх потрібно перетворити.
  • Максимальна довжина URL разом з запитом становить 2'083 символів.

Структура URL виглядає наступним чином:

http://server.tld/getdata?project=you%26i+project&id=25#anker
Компонент Значення
http:// Визначає протокол. Antcas Control підтримує http і https.
server.tld Визначає домен (DNS) або IP-адресу цільового сервера.
getdata Це URI сервера. Він відповідає цільовій сторінці, подібно до шляху.
?[...] Символ ? розділяє URL від так званого GET-запиту, після нього йдуть всі дані форми, також називаються Query. Query завжди кодується, щоб замінити не підтримувані символи.
#[...] Символ #-визначає якоре на сторінці. Таким чином можна перейти до довільного місця (прокрутитися). Ці дані не передаються на сервер. Крім того, цей розділ разом з # не можна копіювати в запит, інакше це викличе іншу цільову сторінку на сервері.

Конфігурація цільових серверів здійснюється у відповідному HTTP-шлюзі.

Структура запиту

Структура запиту складається з заголовка і тіла. У першому рядку заголовка завжди вказується використаний метод, URI та протокол.

GET /getdata?project=you%26i+project&id=25 HTTP/1.1
Host: server.tld

Після цього йде відповідь сервера. Вона містить код стану запиту. Тіло йде після заголовка з порожнім рядком.

HTTP/1.1 200 OK
Server: Apache2
Content-Type: text/html

<html>Привіт, світ</html>

Коди стану

Коди стану поділені на групи. Групи визначаються першою цифрою. Крім того, після числа вказується значення у зрозумілому тексті. Ось деякі приклади:

Статус Опис
200 OK Запит був успішним.
301 Found Перенаправлення на справжню сторінку. Оскільки Antcas Control слідує за посиланнями, ця відповідь зазвичай приховується.
404 Not Found Вказана сторінка не знайдена.
500 Internal Server Error Сталася помилка сервера.

Методи

Методи GET і POST використовуються найчастіше.

Метод Опис
GET Запит GET є стандартним запитом. Він не підтримує контент.
POST Запит POST надсилає контент на сервер. Контент може бути порожнім. Перевагою є те, що контент не має обмеження за довжиною. При запиті GET можна передати лише певну кількість даних.
PUT PUT використовується інтерфейсами для обміну інформацією.
DELETE Разом з PUT він служить для видалення даних.
(інші) Інші методи HTTP також підтримуються, але вимагають відповідної конфігурації.

Аутентифікація

Більшість аутентифікацій відбуваються в заголовку. Однак є запити, які визначені в Query або Content.

Можливо, що потрібно створити сесію перед фактичним запитом. Сесія потім встановлюється як заголовок Set-Cookie. Це кукі потім потрібно знову передати. Вміст кукі чутливий до регістру, це означає, що вміст повинен бути передано один до одного. Ось упрощене приклад:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

Відповідь сервера:

HTTP/1.1 200 OK
Server: Apache2
Content-Type: text/html
Set-Cookie: SESSION=vmvbquk7dq6dbbcq

Тепер кукі можна знову використати в наступному запиті:

GET /opendoor HTTP/1.1
Host: server.tld
Cookie: SESSION=vmvbquk7dq6dbbcq

Підказки

У консолі розробника браузера можна оцінити та протестувати запит у мережі. Крім того, іноді корисно скопіювати або переглянути заголовок.

Конфігурація

В Antcas Control створюється HTTP-інтерфейс з шлюзом. Шлюз конфігурується як HTTP-клиєнт. Тут вказуються цільова адреса та порт (обов’язково). Після цього в структурі конфігурується запит. Для цього в комунікації вводиться URL як змінна.

Простий запит

Щоб створити простий запит, вибирається довільний тип даних. Це зазвичай рядок (string). Якщо на виході відбувається зміна значення, то вже виконується запит. Значення потім використовується безпосередньо як Query.

Складний запит

Більш складний запит створюється за допомогою функціонального блоку HTTP_REQUEST. Для цього тип даних комунікації повинен бути встановлений на raw. Відповідь можна оцінити за допомогою функціонального блоку HTTP_RESPONSE. ID запиту має бути обов’язково пов’язане, щоб правильно призначити відповідь запиту.

Приклад

У цьому прикладі дані надсилаються на сервер за допомогою методу GET і оцінюється відповідь. Повна URL виглядає наступним чином:

http://server.tld/getdata?project=you%26i+project&id=25

Щоб дані можна було отримати або відправити з сервера, використовується наступний приклад:

Примітка: Приклад не показує, як потрібно ініціювати запит. Він запускається позитивним фронтом на вході SET. Щоб запобігти небажаному запиту, вхід DIS повинен бути встановлений на TRUE.

Конфігурація інтерфейсу виконується наступним чином: