HTTP-Henvendelse

For at give dette eksempel, forklares først alle grundlæggende ting om HTTP. Dette er vigtigt for at forstå funktionen af grænsefladen.

Grundlæggende

Følgende punkter skal absolut tages i betragtning:

  • Ved en anmodning via HTTP oprettes der en forbindelse fra klienten, indtil forbindelsen afbrydes af serveren.
  • Henvendelsen foregår via TCP over port 80 (HTTP ikke-krypteret) og over port 443 (HTTPS krypteret).
  • Bruges port 80 med http:// eller port 443 med https://, gemmes porten væk.
  • Forbindelsesslaget er fra HTTP/1.1 sådan, at forbindelsen holdes åben i en periode for at undgå TCP-håndtrykket. Dette ses ikke i Antcas-monitoren. Dog lukkes forbindelsen efter timeout af klienten, altså Antcas-serveren. Timeout bør derfor være tilstrækkeligt højt.
  • Hver enkelt henvendelse er fuldt baglæns kompatibel. Det er ligegyldigt om en server understøtter HTTP/1.0, HTTP/1.1 eller HTTP/2.
  • Headeren er case-insensitive. Dette betyder, at store og små bogstaver ikke spiller nogen rolle. Der er dog nogle producenter, der ikke tager hensyn til dette.
  • Tegnkoden i Antcas Control er altid UTF-8. Bruges andre, skal disse omdannes.
  • Den maksimale længde af en URL inkl. Query er 2'083 tegn.

Opbygningen af en URL ser sådan ud:

http://server.tld/getdata?project=you%26i+project&id=25#anker
Komponent Beskrivelse
http:// Definerer protokollen. Antcas Control understøtter i øjeblikket http og https.
server.tld Definerer domænet (DNS) eller IP-adressen på målserveren.
getdata Er URI'en på serveren. Denne svarer til målsiden, sammenlignelig med en sti.
?[...] Tegnet ? adskiller URL'en fra den såkaldte GET-anmodning, og der følger alle formdata også kaldet Query. Queryen er altid kodet for at erstatte ikke-understøttede tegn.
#[...] Tegnet # definerer en anker på en side. På den måde kan der springes til et vilkårligt sted (rulle). Disse data overføres ikke til serveren. Derudover må dette område inkl. # ikke kopieres ind i henvendelsen, da dette ellers kalder en anden målside på serveren.

Konfigurationen af målserverne foregår i det tilsvarende HTTP-gateway.

Opbygning Af En Henvendelse

Opbygningen af en henvendelse består af et header og et body. Headeren viser altid den anvendte metode, URI'en og protokollen på første linje.

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

Derefter følger serverens svar. Dette indeholder statuskoden for henvendelsen. Bodyen følger headeren med en tom linje.

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

<html>Hallo Welt</html>

Statuskoder

Statuskoderne er inddelt i grupper. Grupperne defineres af det første ciffer. Derudover kommer betydningen på klar tekst efter tallet. Her er nogle eksempler:

Status Beskrivelse
200 OK Anmodningen var vellykket.
301 Found Omdirigering til den egentlige side. Da Antcas Control følger links, bliver dette svar normalt skjult.
404 Not Found Den angivne side blev ikke fundet.
500 Internal Server Error Der er opstået en serverfejl.

Metoder

GET- og POST-metoderne bruges oftest.

Metode Beskrivelse
GET GET-henvendelsen er standardhenvendelsen. Denne understøtter ikke content.
POST POST-henvendelsen sender en content til serveren. Contenten kan også være tom. Fordele ved dette er, at contenten ikke har nogen længdebegrænsning. Ved en GET-anmodning kan der kun overføres et bestemt antal data.
PUT PUT bruges af grænseflader til at udveksle informationer.
DELETE Sammen med PUT bruges det til at slette data.
(andre) Yderligere HTTP-metoder understøttes også, men kræver en passende konfiguration.

Autentificering

De fleste autentificeringer foregår i headeren. Der er dog også anmodninger, der defineres i Query eller Content.

Det kan være nødvendigt at oprette en session før den egentlige henvendelse. Sessionen sættes derefter som Header Set-Cookie. Dette cookie skal så returneres. Indholdet af cookies er case-sensitive, hvilket betyder, at indholdet skal overføres ens-til-ens. Her er et forenklet eksempel:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

Serverens svar:

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

Nu kan cookieet bruges igen i den næste henvendelse:

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

Tip

I browserens udviklerkonsole kan anmodningen evalueres og testes under Netværk. Derudover er det nogle gange rådgivende at kopiere eller se headeren.

Konfiguration

I Antcas Control oprettes en HTTP-grænseflade med et gateway. Gatewayet konfigureres som HTTP-klient. Her indtastes måladressen og porten (påkrævet) tilsvarende. Derefter konfigureres henvendelsen i strukturen. Dette gøres ved at indtaste URL'en som en variabel under Kommunikation.

Enkel Henvendelse

For at oprette en enkel henvendelse vælges en vilkårlig datatype. Denne er fortrinsvis en streng (string). Sker der en værdiforandring på udgangen, udføres der allerede en henvendelse. Værdien bruges så direkte som Query.

Kompleks Henvendelse

En mere kompleks henvendelse oprettes ved hjælp af funktionsblokken HTTP_REQUEST. Her skal datatypen for kommunikation indstilles til raw. Svaret kan derefter evalueres ved hjælp af funktionsblokken HTTP_RESPONSE. ID'en for henvendelsen skal derfor absolut knyttes sammen, for at svaret på anmodningen korrekt kan tilknytte.

Eksempel

I dette eksempel sendes data ved hjælp af GET-metoden til en server og svaret evalueres. Den fuldstændige URL lyder således:

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

For at data kan hentes eller sendes fra en server, bruges følgende eksempel:

Note: Eksemplet viser ikke, hvordan anmodningen skal udløses. Denne udløses med en positiv flanke på indgangen SET. For at forhindre en uønsket henvendelse bør indgangen DIS sættes til TRUE.

Konfigurationen af grænsefladen konfigureres således: