Requisições a um Web Service

<< Clique para Mostrar o Sumário >>

 

Requisições a um Web Service

As requisições HTTP a um Web Service são do tipo POST e devem conter os parâmetros obrigatórios Operation, Entity e Data. O parâmetro Data deve estar no formato XML ou JSON, conforme a especificação a seguir.

 

Estrutura Geral

Exceto para a operação UPDATE TAG, os parâmetros de uma requisição são encapsulados em um Tag Bloco reservado chamado OperationBlock. Para requisições com a operação UPDATE TAG, o Tag Bloco OperationBlock não é utilizado, pois esta operação é destinada à atualização de Tags PLC ou Tags Bloco específicos. Neste caso, o parâmetro Entity representa a propriedade Item do Tag a ser atualizado e o parâmetro Data deve seguir os formatos descritos a seguir.

 

Para Atualização de Tags PLC

Formato XML:

<TagData>
  <Value>XXX</Value>
  <Quality>XXX</Quality>
  <Time>XXX</Time>
</TagData>

 

Formato JSON:

{
  "Value": "XXX",
  "Quality": XXX,
  "Time": "XXX"
}

 

Para Atualização de Tags Bloco

Formato XML:

<TagData>
  <Values>
    <Value>XXX</Value>
    <Value>XXX</Value>
    <Value>XXX</Value>
  </Values>
  <Quality>XXX</Quality>
  <Time>XXX</Time>
</TagData>

 

NOTA

A seção <Values> pode conter tantos elementos <Value> quantos sejam necessários.

 

Formato JSON:

{
  "Value": ["XXX", "XXX", "XXX"],
  "Quality": XXX,
  "Time": "XXX"
}

 

NOTA

O array Value pode conter tantos valores quantos sejam necessários.

 

Regras para Valores

•Value: Os valores enviados são interpretados por uma aplicação como Strings, valores inteiros ou de ponto flutuante, conforme o formato mais adequado

•Quality: Deve ser um valor inteiro que representa a qualidade de um Tag, como por exemplo 192 para qualidade boa

•Time: Deve ser uma String no formato ISO 8601, no padrão YYYY-MM-DDTHH:MM:SS, como por exemplo "2026-09-28T14:23:30"

 

Comportamento Específico

Se uma requisição POST para atualização de um Tag Bloco é enviada, mas o parâmetro Entity referencia um Tag PLC em uma aplicação, apenas o primeiro valor de um array ou lista de valores é considerado para a atualização deste Tag Bloco.

 

Exemplo de Requisições Usando o Programa curl

curl -X POST http://localhost:5050/ \
  -H "Content-Type: application/json" \
  -H "Operation: XXX" \
  -H "Entity: XXX" \
  -d "XXX"

 

O valor do cabeçalho Content-Type deve ser ajustado de acordo com o formato dos dados enviados no corpo, ou seja, o parâmetro -d. Use "application/json" se os dados estão no formato JSON e "application/xml" se os dados estão no formato XML.

O retorno de uma requisição é uma String no formato JSON com o campo Err, um inteiro que representa um código de erro, e o campo ErrMsg, uma String com a descrição deste erro. Os valores possíveis do campo Err e as mensagens correspondentes do campo ErrMsg estão descritos na tabela a seguir.

Códigos de retorno de uma requisição

Err

ErrMsg

Descrição

0 (zero)

OK

Requisição processada com sucesso. Os dados enviados permanecem pendentes até a próxima leitura deste Driver

1 (um)

Operation is empty

O cabeçalho Operation não foi informado ou está vazio

2 (dois)

Error parsing data

Não foi possível interpretar os dados enviados na operação UPDATE TAG. Ocorre quando o corpo de uma requisição está vazio, quando os dados no formato XML ou JSON são inválidos para o formato indicado no cabeçalho Content-Type, quando o campo Value contém um tipo de dados não suportado ou quando nenhum valor válido é encontrado

3 (três)

Invalid XML or JSON data

O corpo de uma requisição está vazio ou não são dados válidos no formato XML ou JSON para o formato indicado no cabeçalho Content-Type. Aplica-se às operações diferentes de UPDATE TAG

 

Exemplo de Resposta

{"Err":3,"ErrMsg":"Invalid XML or JSON data"}

Esta página foi útil?