HTTP_QUERY
Recebe uma requisição HTTP GET por um socket configurado como HTTP-Server, extrai a query da requisição para uma STRING e envia de volta uma STRING de resposta, completando a transação HTTP. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
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 ao estado inativo
após o término do envio da resposta; nesse momento RESULT indica o estado do
processo (SUCCESS = 0 quando a resposta foi encaminhada). SOCKET informa, no
instante em que QSA é ativada, qual socket recebeu a requisição. A entrada SEND
é avaliada por transição, após a chegada da requisição, e deve ser ativada depois de
montada a string de resposta QR.
Importante
A string de resposta QR pode ser nula, mas sempre deve existir para completar
a transação HTTP corrente.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
START |
IN |
BOOL |
FALSE |
— |
Ativa (TRUE) ou cancela (FALSE) o processamento do bloco. |
SEND |
IN |
BOOL |
FALSE |
— |
Avaliado por transição: envia a resposta |
QS |
IN_OUT |
STRING |
— |
— |
Recebe a query enviada na requisição HTTP do cliente. |
QR |
IN_OUT |
STRING |
— |
— |
Define a string retornada ao cliente HTTP. Pode ser vazia, mas deve existir. |
QSA |
OUT |
BOOL |
FALSE |
— |
Sinaliza que há uma query a ser processada em |
SOCKET |
OUT |
USINT |
0 |
0 .. MAX_SOCKETS-1 |
Número do socket que recebeu a requisição HTTP em tratamento. |
RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da última transação (ver Códigos de retorno). |
Códigos de retorno
RESULT é do tipo RET_CODE. Use os identificadores com o namespace HILS
(ex.: HILS.CO_SOCK_ERR). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Resposta encaminhada ao cliente com sucesso. |
63 |
CO_CONEX_FAIL |
Falha no processo de conexão. |
67 |
CO_SOCK_ERR |
Erro de socket (não foi possível adquirir/usar o socket). |
68 |
CO_TRA_BUF_OVL |
Overflow no buffer de transmissão (resposta grande demais). |
10 |
GL_CMD_TMO |
Timeout na execução do comando. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O equipamento deve ter ao menos 1 socket configurado como HTTP-Server na porta 80.
QRdeve estar montada antes de ativarSEND.
Observações
A saída
QSAfica em TRUE desde a chegada da requisição até o término do envio da resposta; monteQRenquantoQSAestiver ativo.RESULTé atualizado no encerramento da transação.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
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 *)
END_VAR
(* Abra o browser e digite, por exemplo, 192.168.0.199/?Hello
(onde 192.168.0.199 é o IP do controlador). O controlador retorna ">: Hello". *)
H_QUERY(
START := TRUE,
SEND := H_QUERY.QSA,
QS := QS_STR,
QR := QR_STR
);
IF H_QUERY.QSA THEN
QR_STR := CONCAT(PREFIX, QS_STR); (* monta a resposta *)
END_IF;