HTTP Query

Per fornire questo esempio, vengono prima spiegate tutte le basi di HTTP. Questo è importante per comprendere il funzionamento dell'interfaccia.

Basi

I seguenti punti devono essere assolutamente considerati:

  • In una richiesta via HTTP viene stabilita una connessione dal client fino a quando la connessione non viene terminata dal server.
  • La query avviene tramite TCP sul port 80 (HTTP non crittografato) e sul port 443 (HTTPS crittografato).
  • Se si utilizza il port 80 con http:// o il port 443 con https://, il port viene nascosto.
  • Lo strato di connessione da HTTP/1.1 è tale che la connessione rimane aperta per un po' di tempo per evitare l'handshake di TCP. Questo non è visibile nel monitor di Antcas Hub. Tuttavia, dopo il timeout, la connessione viene chiusa dal client, ovvero dal server Antcas. Il timeout dovrebbe quindi essere sufficientemente alto.
  • Ogni query è completamente retrocompatibile. Non importa se un server supporti HTTP/1.0, HTTP/1.1 o HTTP/2.
  • L'intestazione è case-insensitive. Questo significa che maiuscole e minuscole non contano. Tuttavia, alcuni produttori non prestano attenzione a implementare correttamente questa caratteristica.
  • La codifica dei caratteri in Antcas Control è sempre UTF-8. Se vengono utilizzate altre codifiche, queste devono eventualmente essere convertite.
  • La lunghezza massima di un URL inclusa la query è 2'083 caratteri.

La struttura di un URL è la seguente:

http://server.tld/getdata?project=you%26i+project&id=25#anker
Componente Significato
http:// Definisce il protocollo. Antcas Control supporta attualmente http e https.
server.tld Definisce il dominio (DNS) o l'indirizzo IP del server di destinazione.
getdata È la URI del server. Questa corrisponde alla pagina di destinazione, simile a un percorso.
?[...] Il ? separa l'URL dalla cosiddetta richiesta GET, seguita da tutti i dati del modulo anche chiamati query. La query viene sempre codificata per sostituire i caratteri non supportati.
#[...] Il carattere #- definisce un ancoraggio su una pagina. In questo modo è possibile saltare a qualsiasi punto (scorrere). Questi dati non vengono trasmessi al server. Inoltre, questa sezione inclusa # non deve essere copiata nella query, poiché ciò altrimenti richiamerebbe una pagina di destinazione diversa sul server.

La configurazione dei server di destinazione avviene nel corrispondente gateway HTTP.

Struttura Di Una Query

La struttura di una query consiste in un header e in un body. L'header mostra sempre nella prima riga il metodo utilizzato, l'URI e il protocollo.

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

Segue la risposta del server. Questa include lo stato della query. Il body segue l'header con una riga vuota.

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

<html>Ciao Mondo</html>

Codici Di Stato

I codici di stato sono suddivisi in gruppi. I gruppi sono definiti dal primo numero. Inoltre, dopo il numero viene indicato il significato in chiaro. Ecco alcuni esempi:

Stato Descrizione
200 OK La richiesta è stata eseguita con successo.
301 Found Reindirizzamento alla pagina effettiva. Poiché Antcas Control segue i link, questa risposta viene solitamente nascosta.
404 Not Found La pagina indicata non è stata trovata.
500 Internal Server Error Si è verificato un errore del server.

Metodi

I metodi GET e POST sono i più utilizzati.

Metodo Descrizione
GET La query GET è la query standard. Questa non supporta contenuti.
POST La query POST invia un contenuto al server. Il contenuto può anche essere vuoto. Il vantaggio è che il contenuto non ha limiti di lunghezza. In una richiesta GET possono essere trasmessi solo un numero determinato di dati.
PUT PUT viene utilizzato dalle interfacce per scambiare informazioni.
DELETE Insieme a PUT serve a eliminare i dati.
(altri) Altri metodi HTTP sono supportati, ma richiedono una configurazione appropriata.

Autenticazione

La maggior parte delle autenticazioni avviene nell'header. Tuttavia, ci sono anche richieste che vengono definite nella query o nel contenuto.

Potrebbe essere necessario creare una sessione prima della richiesta effettiva. La sessione viene quindi impostata come header Set-Cookie. Questo cookie deve poi essere nuovamente trasmesso. Il contenuto dei cookie è case-sensitive, il che significa che il contenuto deve essere trasmesso uno a uno. Ecco un esempio semplificato:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

Risposta del server:

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

Ora il cookie può essere riutilizzato nella query successiva:

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

Consigli

Nella console per sviluppatori del browser, è possibile valutare e testare la query sotto Rete. Inoltre, a volte è consigliabile copiare o visualizzare l'header.

Configurazione

In Antcas Control viene creata un'interfaccia HTTP con un gateway. Il gateway viene configurato come client HTTP. Qui vengono inseriti l'indirizzo di destinazione e la porta (obbligatoria) in modo appropriato. Successivamente, nella struttura viene configurata la query. A tal fine, sotto Comunicazione viene inserita l'URL come variabile.

Query Semplice

Per creare una query semplice, viene scelto un tipo di dati qualsiasi. Questo è preferibilmente una stringa (string). Se si verifica un cambiamento di valore all'uscita, viene già eseguita una query. Il valore viene quindi utilizzato direttamente come query.

Query Complessa

Una query più complessa viene creata utilizzando il blocco funzionale HTTP_REQUEST. A tal fine, il tipo di dati della comunicazione deve essere impostato su raw. La risposta può quindi essere valutata utilizzando il blocco funzionale HTTP_RESPONSE. L'ID della query deve essere collegato per assegnare correttamente la risposta alla richiesta.

Esempio

In questo esempio, i dati vengono inviati a un server utilizzando il metodo GET e viene valutata la risposta. L'URL completo è il seguente:

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

Per poter prelevare o inviare dati da/verso un server, viene utilizzato il seguente esempio:

Nota: L'esempio non mostra come deve essere attivata la richiesta. Questa viene attivata con un fronte positivo all'ingresso SET. Per evitare una query indesiderata, l'ingresso DIS dovrebbe essere impostato su TRUE.

La configurazione dell'interfaccia viene configurata come segue: