HTTP-Vraag

Om dit voorbeeld te voorzien, worden eerst alle basisprincipes van HTTP uitgelegd. Dit is belangrijk om het functioneren van de interface te begrijpen.

Basisprincipes

De volgende punten moeten absoluut in acht genomen worden:

  • Bij een verzoek via HTTP wordt een verbinding opgebouwd door de client, totdat de verbinding door de server wordt verbroken.
  • Het verzoek vindt plaats via TCP over poort 80 (HTTP onversleuteld) en over poort 443 (HTTPS versleuteld).
  • Wordt poort 80 gebruikt met http:// of poort 443 met https://, dan wordt de poort verborgen.
  • De verbindingslaag is vanaf HTTP/1.1 zodanig dat de verbinding een tijdje open gelaten wordt om het handshake van TCP te vermijden. Dit is in de monitor van Antcas niet zichtbaar. Echter wordt na het timeout de verbinding door de client, dus de Antcas-server gesloten. Het timeout moet daarom voldoende hoog zijn.
  • Elk verzoek is volledig achterwaarts compatibel. Of een server HTTP/1.0, HTTP/1.1 of HTTP/2 ondersteunt maakt hierbij niet uit.
  • De header is case-insensitive. Dit betekent dat hoofd- en kleine letters geen rol spelen. Er zijn echter enkele fabrikanten die dit niet correct implementeren.
  • De tekencodering in Antcas Control is altijd UTF-8. Worden andere gebruikt, moeten deze eventueel geconverteerd worden.
  • De maximale lengte van een URL inclusief query bedraagt 2'083 tekens.

De opbouw van een URL ziet er als volgt uit:

http://server.tld/getdata?project=you%26i+project&id=25#anker
Component Betekenis
http:// Definieert het protocol. Antcas Control ondersteunt momenteel http en https.
server.tld Definieert het domein (DNS) of IP-adres van de doelserver.
getdata Is de URI van de server. Dit correspondeert met de doelpagina, vergelijkbaar met een pad.
?[...] Het ? scheidt de URL van het zogenaamde GET-verzoek, er volgen alle formuliergegevens ook query genoemd. De query wordt altijd gecodeerd om niet-ondersteunde tekens te vervangen.
#[...] Het #-teken definieert een anker op een pagina. Zo kan men naar een willekeurige plaats springen (scrollen). Deze gegevens worden niet aan de server overgedragen. Bovendien mag dit gedeelte inclusief # niet in het verzoek gekopieerd worden, omdat dit anders een andere doelpagina op de server oproept.

De configuratie van de doelservers vindt plaats in het overeenkomstige HTTP-gateway.

Opbouw Van Een Vraag

De opbouw van een verzoek bestaat uit een header en een body. De header toont in de eerste regel altijd de gebruikte methode, de URI en het protocol aan.

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

Daarna volgt het antwoord van de server. Dit bevat de statuscode van het verzoek. De body volgt op de header met een lege regel.

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

<html>Hallo Wereld</html>

Statuscodes

De statuscodes zijn in groepen ingedeeld. De groepen worden gedefinieerd door het eerste cijfer. Bovendien komt na het nummer de betekenis in duidelijke taal. Hier enkele voorbeelden:

Status Omschrijving
200 OK Het verzoek was succesvol.
301 Found Doorverwijzing naar de echte pagina. Omdat Antcas Control de links volgt, wordt dit antwoord meestal verborgen.
404 Not Found De opgegeven pagina is niet gevonden.
500 Internal Server Error Er is een serverfout opgetreden.

Methoden

De GET- en POST-methoden worden het meest gebruikt.

Methode Omschrijving
GET Het GET-verzoek is het standaardverzoek. Dit ondersteunt geen inhoud.
POST Het POST-verzoek stuurt een inhoud naar de server. De inhoud mag ook leeg zijn. Het voordeel hierbij is dat de inhoud geen lengtebeperking heeft. Bij een GET-aanvraag kunnen alleen een bepaalde hoeveelheid gegevens worden overgedragen.
PUT PUT wordt door interfaces gebruikt om informatie uit te wisselen.
DELETE Samen met PUT dient het om gegevens te verwijderen.
(andere) Andere HTTP-methoden worden ook ondersteund, maar vereisen een overeenkomstige configuratie.

Authenticatie

De meeste authenticaties vinden plaats in de header. Er zijn echter ook verzoeken die in de query of inhoud gedefinieerd worden.

Het kan voorkomen dat een sessie moet worden gegenereerd, voordat het echte verzoek wordt uitgevoerd. De sessie wordt vervolgens als header Set-Cookie ingesteld. Dit cookie moet vervolgens weer worden overgedragen. De inhoud van de cookies is case-sensitive, dit betekent dat de inhoud exact moet worden overgedragen. Hier een vereenvoudigd voorbeeld:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

Antwoord van de server:

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

Nu kan het cookie in de volgende vraag opnieuw worden gebruikt:

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

Tips

In de ontwikkelaarsconsole van de browser kan onder Netwerk het verzoek worden geëvalueerd en getest. Bovendien is het soms raadzaam om de header te kopiëren of in te zien.

Configuratie

In Antcas Control wordt een HTTP-interface met een gateway aangemaakt. Het gateway wordt als HTTP-client geconfigureerd. Hier worden het doeladres en de poort (verplicht) overeenkomstig ingevoerd. Vervolgens wordt in de structuur het verzoek geconfigureerd. Hiertoe wordt onder Communicatie de URL als variabele ingevoerd.

Eenvoudige vraag

Om een eenvoudige vraag te maken, wordt een willekeurig datatype gekozen. Dit is voor voorkeur een tekenreeks (string). Als er aan de uitgang een waardeverandering optreedt, wordt al een verzoek uitgevoerd. De waarde wordt vervolgens direct als query gebruikt.

Complexe vraag

Een complexere vraag wordt gemaakt met behulp van de functieblok HTTP_REQUEST. Hiertoe moet het datatype van de communicatie op raw worden ingesteld. Het antwoord kan vervolgens met behulp van de functieblok HTTP_RESPONSE worden geëvalueerd. De ID van de vraag moet hiervoor onmisbaar worden gekoppeld om het antwoord van het verzoek correct toe te wijzen.

Voorbeeld

In dit voorbeeld worden gegevens met behulp van de GET-methode naar een server gestuurd en wordt het antwoord geëvalueerd. De volledige URL luidt als volgt:

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

Om gegevens van een server te halen of te sturen, wordt het volgende voorbeeld gebruikt:

Opmerking: Het voorbeeld laat niet zien hoe het verzoek moet worden uitgeloost. Dit gebeurt met een positieve flank aan de ingang SET. Om een onbedoeld verzoek te voorkomen, moet de ingang DIS op TRUE worden ingesteld.

De configuratie van de interface wordt als volgt geconfigureerd: