HTTP-Lekérdezés

A példa megvalósításához először minden alapvetőt HTTP-ről magyarázunk el. Ez fontos ahhoz, hogy megértse a kapcsolati felület működését.

Alapok

A következő pontokat kötelező figyelembe venni:

  • HTTP-n keresztül történő kérésnél a kliens épít fel egy kapcsolatot, amíg a szerver nem szakítja meg azt.
  • A lekérdezés TCP-n keresztül történik a 80-as porton (HTTP titkosítás nélkül) és a 443-as porton (HTTPS titkosítással).
  • Ha a 80-as portot http:// vagy a 443-as portot https:// használja, akkor a port elrejtett.
  • A kapcsolati réteg HTTP/1.1-től kezdve úgy van beállítva, hogy a kapcsolat egy ideig nyitva marad, hogy elkerüljék a TCP handshake-t. Ez az Antcas monitorjában nem látható. Azonban a timeout után a kliens, azaz az Antcas szerver zárja be a kapcsolatot. A timeoutnak megfelelően magasnak kell lennie.
  • Minden lekérdezés teljes mértékben visszafelé kompatibilis. Egyébként nem számít, hogy egy szerver HTTP/1.0-t, HTTP/1.1-et vagy HTTP/2-t támogat-e.
  • A fejléc nagy- és kisbetűkön nem érzékeny. Ez azt jelenti, hogy a nagy- és kisbetűk nem játszanak szerepet. Azonban vannak néhány gyártó, akik nem figyelnek rá, hogy ezt megvalósítsák.
  • A karakterkódolás az Antcas Control-ban mindig UTF-8. Ha másokat használnak, akkor azok esetlegesen konvertálni kell.
  • Egy URL maximális hossza, beleértve a lekérdezési paramétereket, 2'083 karakter.

Az URL felépítése a következő:

http://server.tld/getdata?project=you%26i+project&id=25#anker
Komponens Signifikancia
http:// A protokollt határozza meg. Az Antcas Control jelenleg http és https protokollokat támogat.
server.tld A célszerver doménnevét (DNS) vagy IP-címét határozza meg.
getdata A szerver URI-je. Ez felel meg a céloldalnak, hasonlóan egy útvonalhoz.
?[...] A ? elválasztja az URL-t a úgynevezett GET-kéréstől, utána követik az összes űrlapadatok, amelyeknek a lekérdezési paraméterek is nevezik. A lekérdezés mindig kódolva van, hogy a nem támogatott karaktereket helyettesítse.
#[...] A #-jel egy oldalankénti horgonyt határoz meg. Így bármelyik helyre ugrani (görgetni) lehet. Ezek az adatok nem kerülnek átadásra a szerverhez. Emellett ez a rész, beleértve a # jelet, nem másolható be a lekérdezésbe, mert akkor egy másik céloldalt hívna fel a szerveren.

A célszerverek konfigurálása a megfelelő HTTP-gatewayben történik.

Lekérdezés felépítése

A lekérdezés felépítése egy fejlécből és egy testből áll. A fejléc első sorában mindig megjelenik az használt módszer, az URI és a protokoll.

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

Ezután következik a szerver válasza. Ez tartalmazza az állapotkódot a lekérdezéshez. A test egy üres sor követi a fejléceket.

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

<html>Hallo Welt</html>

Állapotkódok

Az állapotkódokat csoportokba sorolják. A csoportokat az első szám határozza meg. Emellett a szám után a jelentés magyarázata következik. Itt vannak néhány példa:

Állapot Leírás
200 OK A lekérdezés sikeres volt.
301 Found Átirányítás az eredeti oldalra. Mivel az Antcas Control követi a linkeket, ez az válasz általában elrejtett.
404 Not Found A megadott oldal nem található.
500 Internal Server Error Egy szerverhiba történt.

Módszerek

A GET- és POST-módszereket a leggyakrabban használják.

Módszer Leírás
GET A GET-lekérdezés az alapértelmezett lekérdezés. Ez nem támogat tartalmat.
POST A POST-lekérdezés egy tartalmat küld a szervernek. A tartalom üres is lehet. Az előny itt az, hogy a tartalom nincs hosszbekötve. Egy GET-kérésnél csak egy bizonyos számú adat átvihető.
PUT A PUT-t a kapcsolatok használják információk cseréjéhez.
DELETE Összesen a PUT-tal adatok törlésére szolgál.
(egyéb) A további HTTP-módszerek szintén támogatottak, de egy megfelelő konfigurációt igényelnek.

Hitelesítés

A legtöbb hitelesítést a fejlécben végzik el. De vannak kérések is, amelyek a lekérdezési paraméterekben vagy a tartalomban vannak meghatározva.

Lehet, hogy egy munkamenet létrehozása szükséges az eredeti lekérdezés előtt. A munkamenetet aztán a fejléc Set-Cookie beállításaként állítják be. Ez a sütiket újra át kell adni. A sütik tartalma nagy- és kisbetűkön érzékeny, ez azt jelenti, hogy a tartalom pontosan egyezőnek kell lennie. Itt van egy egyszerűsített példa:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

A szerver válasza:

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

Most a sütiket az következő lekérdezésben újra használhatjuk:

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

Tippek

A böngésző fejlesztői konzoljában a hálózati panel alatt kiértékelhető és tesztelhető a kérés. Emellett néha ajánlott a fejléc másolása vagy megtekintése.

Konfiguráció

Az Antcas Control-ban egy HTTP-kapcsolatot egy gateway segítségével hozunk létre. A gatewayt HTTP-kliensként konfiguráljuk. Itt a célcím és a port (kötelező) megfelelően be kell írni. Ezután a struktúrában a lekérdezés konfigurálható. Ehhez a kommunikáció alatt az URL-t egy változóként kell beírni.

Egyszerű lekérdezés

Egy egyszerű lekérdezés létrehozásához válasszon egy tetszőleges adattípust. Ez előnyösen egy karakterlánc (string). Ha a kimeneten értékváltozás történik, akkor már egy lekérdezés végrehajtása történik. Az értéket aztán közvetlenül a lekérdezési paraméterként használják.

Bonyolultabb lekérdezés

A bonyolultabb lekérdezést az HTTP_REQUEST funkcióblokkal hozzuk létre. Ehhez a kommunikáció adattípusa raw-ra kell állítani. A válasz aztán az HTTP_RESPONSE funkcióblokkal értékelhető ki. A lekérdezés azonosítóját ehhez kötelező összekötni, hogy a kérésnek megfelelően hozzárendeljük a választ.

Példa

Ebben a példában adatok küldése és a válasz értékelése történik GET-módszerrel egy szerverre. A teljes URL az alábbi:

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

Azonban adatok felvételéhez vagy küldéséhez a következő példa használható:

Megjegyzés: A példa nem mutatja, hogyan kell a kérést kiváltani. Ez egy pozitív éllel történik az SET bemenetén. Egy akaratlan lekérdezés megakadályozásához az DIS bemenet TRUE-ra állítva.

A kapcsolati felület konfigurálása a következőképpen történik: