HTTP_QUERY
A função deste bloco é obter uma requisição HTTP (HTTP GET) através de qualquer socket de comunicação habilitado para este protocolo, extrair a query associada à requisição (caso exista) e transferi-la para uma string. Em seguida, aguarda a aplicação montar uma string de resposta, enviando a mesma no pacote de resposta da requisição HTTP.
Bloco
HTTP_QUERY
+--------------+
BOOL ----|START QSA|---- BOOL
| |
BOOL ----|SEND SOCKET|---- USINT
| |
| RESULT|---- INT
| |
STRING ----|QS ---------- |----
| |
STRING ----|QR ---------- |----
+--------------+
A saída QSA é ativada na chegada da requisição HTTP e retorna para o estado inativo após o término do envio do pacote de resposta da requisição. Neste momento, a saída RESULT indicará o estado do processo onde, SUCCESS (0) indica que a resposta foi encaminhada para o cliente e, quando diferente de SUCCESS sinaliza erro no processo.
A saída SOCKET retorna no instante em que QSA é ativada, qual o socket que recebeu a requisição HTTP que esta sendo tratada por este bloco.
A entrada SEND é avaliada por transição após a chegada da requisição HTTP (ativação da saída QSA) e deve ser ativada após a montagem da string de resposta (QR) estar disponivel.
Importante
A string de resposta pode ser NULA se necessário mas sempre deve existir para completar a transação HTTP corrente.
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
FALSE |
Ativa/Cancela o processamento do bloco |
|
SEND |
Entrada |
BOOL |
FALSE |
Envia a resposta da query recebida |
|
QS |
Entrada/Saída |
STRING |
Obtem a query enviada na requisição HTTP do cliente |
||
QR |
Entrada/Saída |
STRING |
Define a string a ser retornada para o cliente HTTP |
||
QSA |
Saída |
BOOL |
FALSE |
Sinaliza que existe uma query a ser processada em QS |
|
SOCKET |
Saída |
USINT |
0 |
Nro do socket associado a transação HTTP (0..MAX_SOCKETS-1) |
|
RESULT |
Saída |
INT |
0 |
Código de retorno da ultima transação executada. É atualizado quando a saída READY for para TRUE. |
RESULT
Tipo Dado |
Descrição |
INT |
Código de retorno na execução da função, do tipo RET_CODE, onde:
|
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Valor Inicial |
Descrição |
|---|---|---|---|
H_QUERY |
HILS.HTTP_QUERY |
Instancia do bloco de procesamento de query HTTP |
|
QS_STR |
STRING |
String que irá receber a query HTTP |
|
QR_STR |
STRING |
String de resposta da query HTTP |
|
PREFIX |
STRING |
‘>: ‘ |
prefixo a ser acrescentado na resposta |
Código ST
(* Abra o browser e digite por exemplo 192.168.0.199/?Hello onde 192.168.0.199 é o IP do controlador.
O controlador deverá retornar:
>: Hello
para o browser
OBS: o equipamento deve possuir pelo menos 1 socket configurado para HTTP escutando na porta 80.
*)
(* ... *)
// Espera receber uma query HTTP de qualquer um dos sockets configurados como HTTP-Server.
H_QUERY(
START := TRUE,
SEND := H_QUERY.QSA,
QS := QS_STR,
QR := QR_STR
);
IF (H_QUERY.QSA) THEN
// Neste ponto a aplicação recebeu uma query que foi transferida para a string QS
// Acrescenta na string um prefixo e devolve como resposta da requisição recebida.
QR_STR := CONCAT(PREFIX, QS_STR);
END_IF;
(* ... *)