Il metodo Post inizia il metodo HTTP per inviare i dati alla risorsa specificata.
Utilizzando gli ingressi i_sHost (obbligatorio) e i_sResource viene creata l'intestazione predefinita della richiesta HTTP. Se occorre aggiungere ulteriori informazioni all'intestazione, passarle attraverso l'ingresso i_anyAdditionalHeader. I dati assegnati a questo ingresso non vengono verificati. All'ingresso i_anyResponseBuffer, occorre assegnare un buffer di dimensione sufficiente per memorizzare l'intera risposta ricevuta dal server.
Gli ingressi i_anyContent e i_udiContentLength specificano il contenuto da inviare.
Il valore di restituzione del metodo è di tipo BOOL e indica se l'esecuzione del metodo è riuscita (TRUE) o meno (FALSE). Valutare le uscite di diagnostica del metodo, nel caso in cui il valore di restituzione sia FALSE. Non è necessario azzerare un errore indicato da queste uscite. Utilizzare la proprietà State per ottenere lo stato di elaborazione.
Una chiamata del metodo Post è consentita solo nello stato Connected.
L'esempio seguente mostra come la richiesta HTTP sia simile dopo la chiamata del metodo Post.
Chiamata del metodo:
sAdditionalHeader := 'Content-Type: application/json$r$nConnection: Keep-Alive';
sContent := 'This is the content!';
fbHTTP.Post( i_sRessource:= 'example',
i_sHost:= 'se.com',
i_anyAdditionalHeader:= sAdditionalHeader,
i_anyContent:= sContent,
i_udiContentLength:= 20,
i_anyResponseBuffer:= sResponse);
Richiesta HTTP risultante:
POST /example HTTP/1.1
Host: se.com
Content-Length: 20
Content-Type: application/json
Connection: Keep-Alive
This is the content!
Transizione di stato del client
Fase |
Descrizione |
---|---|
1 |
Stato iniziale: Connected |
2 |
Chiamata di funzione |
3 |
Stato: SendingRequest, in caso contrario viene rilevato un errore |
4 |
Stato finale: ResponseAvailable, in caso contrario viene rilevato un errore |
NOTA: In caso di modifiche online mentre il blocco funzione elabora una richiesta Post, l'esecuzione viene interrotta per impedire una possibile violazione di accesso causata dall'elaborazione di indirizzi errati del puntatore.
Ingresso |
Tipo di dati |
Descrizione |
---|---|---|
i_sResource |
STRING[GPL.Gc_uiMaxLengthOfResource] |
Specifica la risorsa sull'host che deve essere raggiunto dalla richiesta. |
i_sHost |
STRING[GPL.Gc_uiMaxHostSize] |
Specifica l'indirizzo dell'host; se richiesto insieme con la porta. |
i_anyAdditionalHeader |
ANY_STRING |
Specifica ulteriori intestazioni da aggiungere alla richiesta HTTP. |
i_anyContent |
ANY |
Assegna il buffer con il contenuto da inviare con la richiesta HTTP. |
i_udiContentLength |
UDINT |
Lunghezza del contenuto in byte. |
i_anyResponseBuffer |
ANY |
Buffer per memorizzare la risposta dal server. |
Uscita |
Tipo di dati |
Descrizione |
---|---|---|
q_xError |
BOOL |
Se questa uscita è impostata su TRUE, è stato rilevato un errore. Per informazioni, consultare q_etResult e q_etResultMsg. |
q_etResult |
Fornisce informazioni su stato e diagnostica come valore numerico. |
|
q_sResultMsg |
STRING[80] |
Fornisce ulteriori informazioni su stato e diagnostica come messaggio di testo. |