HTTP-Αίτηση

Για να συμπληρώσετε αυτό το παράδειγμα, πρώτα εξηγούνται όλες οι βασικές έννοιες του HTTP. Αυτό είναι σημαντικό για να κατανοήσετε τη λειτουργία της διεπαφής.

Βασικά Στοιχεία

Τα παρακάτω σημεία πρέπει να λαμβάνονται υπόψη:

  • Σε μια αίτηση μέσω HTTP, δημιουργείται μια σύνδεση από τον πελάτη μέχρι να διακοπεί η σύνδεση από τον διακομιστή.
  • Η ερώτηση πραγματοποιείται μέσω TCP από την θύρα 80 (HTTP μη κρυπτογραφημένο) και από την θύρα 443 (HTTPS κρυπτογραφημένο).
  • Αν χρησιμοποιείται η θύρα 80 με http:// ή η θύρα 443 με https://, η θύρα δεν εμφανίζεται.
  • Το επίπεδο σύνδεσης από το HTTP/1.1 είναι τέτοιο ώστε η σύνδεση να παραμένει ανοιχτή για κάποιο χρονικό διάστημα, για να αποφευχθεί η διαδικασία handshake του TCP. Αυτό δεν είναι ορατό στον παρατηρητή του Antcas. Ωστόσο, μετά την λήξη της προθεσμίας, η σύνδεση κλείνει από τον πελάτη, δηλαδή από τον διακομιστή του Antcas. Η προθεσμία πρέπει να είναι αρκετά υψηλή.
  • Κάθε ερώτηση είναι πλήρως συμβατή προς τα πίσω. Είναι ανεξάρτητο από το αν ένας διακομιστής υποστηρίζει HTTP/1.0, HTTP/1.1 ή HTTP/2.
  • Το κεφαλίδιο είναι Case-Insensitive. Αυτό σημαίνει ότι η κεφαλαία και μικρή γραφή δεν παίζουν ρόλο. Ωστόσο, υπάρχουν ορισμένοι κατασκευαστές που δεν φροντίζουν να το εφαρμόσουν σωστά.
  • Η κωδικοποίηση χαρακτήρων στο Antcas Control είναι πάντα UTF-8. Αν χρησιμοποιούνται άλλες, πρέπει ίσως να μετατραπούν.
  • Το μέγιστο μήκος μιας URL συμπεριλαμβανομένου του Query είναι 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-Request, ακολουθούν όλα τα δεδομένα της φόρμας επίσης γνωστά ως Query. Το Query είναι πάντα κωδικοποιημένο για να αντικαταστήσει χαρακτήρες που δεν υποστηρίζονται.
#[...] Το σύμβολο #- ορίζει έναν σύνδεσμο σε μια σελίδα. Έτσι μπορείτε να πηδάτε σε οποιαδήποτε θέση (σκρόλαρμα). Τα δεδομένα αυτά δεν μεταδίδονται στον διακομιστή. Επιπλέον, αυτός ο τομέας συμπεριλαμβανομένου του # δεν πρέπει να αντιγράφεται στην ερώτηση, καθώς αυτό θα καλεί διαφορετική σελίδα προορισμού στον διακομιστή.

Η ρύθμιση των διακομιστών προορισμού γίνεται στο αντίστοιχο HTTP Gateway.

Δομή μιας Ερώτησης

Η δομή μιας ερώτησης αποτελείται από ένα κεφαλίδιο και ένα σώμα. Το κεφαλίδιο δείχνει πάντα στη πρώτη γραμμή τη μέθοδο που χρησιμοποιείται, την 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 ή στο περιεχόμενο.

Μπορεί να χρειαστεί να δημιουργηθεί μια συνεδρία πριν από την πραγματική ερώτηση. Η συνεδρία τότε ρυθμίζεται ως κεφαλίδιο Set-Cookie. Αυτό το cookie πρέπει να μεταδοθεί ξανά. Το περιεχόμενο των cookies είναι Case-Sensitive, δηλαδή το περιεχόμενο πρέπει να μεταδοθεί ακριβώς όπως είναι. Εδώ ένα απλοποιημένο παράδειγμα:

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

Τώρα το cookie μπορεί να χρησιμοποιηθεί ξανά στην επόμενη ερώτηση:

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

Συμβουλές

Στην κονσόλα ανάπτυξης του προγράμματος περιήγησης, μπορείτε να αξιολογήσετε και να δοκιμάσετε την αίτηση στο Δίκτυο. Επιπλέον, μερικές φορές είναι σκόπιμο να αντιγράψετε ή να δείτε το κεφαλίδιο.

Ρύθμιση

Στο Antcas Control δημιουργείται μια HTTP διεπαφή με ένα Gateway. Το Gateway ρυθμίζεται ως HTTP-Client. Εδώ εισάγεται η διεύθυνση προορισμού και η θύρα (απαιτείται) αντίστοιχα. Στη συνέχεια, ρυθμίζεται η ερώτηση στη δομή. Για αυτό, εισάγεται η URL ως μεταβλητή στην Επικοινωνία.

Απλή Ερώτηση

Για να δημιουργήσετε μια απλή ερώτηση, επιλέγεται ένας τυχαίος τύπος δεδομένων. Αυτός προτιμάται να είναι μια αλφαριθμητική σειρά (string). Αν συμβεί αλλαγή στη τιμή στην έξοδο, τότε εκτελείται ήδη μια ερώτηση. Η τιμή χρησιμοποιείται τότε απευθείας ως Query.

Πλοκή Ερώτησης

Μια πιο περίπλοκη ερώτηση δημιουργείται με τη Μονάδα Λειτουργίας HTTP_REQUEST. Για αυτό, ο τύπος δεδομένων της επικοινωνίας πρέπει να ρυθμιστεί σε raw. Η απάντηση μπορεί τότε να αξιολογηθεί με τη Μονάδα Λειτουργίας HTTP_RESPONSE. Το ID της ερώτησης πρέπει να συνδεθεί αναγκαστικά, για να αντιστοιχίσει σωστά την απάντηση στην αίτηση.

Παράδειγμα

Σε αυτό το παράδειγμα, τα δεδομένα αποστέλλονται σε έναν διακομιστή με τη μέθοδο GET και η απάντηση αξιολογείται. Η πλήρης URL είναι η εξής:

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

Για να μπορούν τα δεδομένα να αποσταλούν ή να ληφθούν από έναν διακομιστή, χρησιμοποιείται το παρακάτω παράδειγμα:

Σημείωση: Το παράδειγμα δεν δείχνει πώς πρέπει να προκληθεί η αίτηση. Αυτή προκαλείται με μια θετική άνοδο στην είσοδο SET. Για να αποφευχθεί μια ανεπιθύμητη ερώτηση, θα πρέπει να ρυθμιστεί η είσοδος DIS σε TRUE.

Η ρύθμιση της διεπαφής γίνεται ως εξής: