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:

  • Se for igual a 0: Função executada com sucesso - código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [2]

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

Clique aqui para baixar a tabela de variáveis

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;
(* ... *)