Com macros, você pode enviar dados para um servidor HTTPs sempre que precisar. Você tem controle sobre quais dados são enviados e como são organizados, simplificando a adaptação dos dados para uso com serviços existentes.

Medidas de segurança:

  • O recurso de solicitação do cliente HTTP(S) é definido como desabilitado por padrão. Um administrador do sistema deve ativar explicitamente o recurso definindo HttpClient > Mode como Ativado ( modo xConfiguration HttpClient: ativado ).

  • O administrador do sistema pode impedir o uso de HTTP definindo HttpClient > AllowHTTP como Falso ( xConfiguration HttpClient AllowHTTP: Falso ).

  • O administrador do sistema pode especificar uma lista de servidores HTTP(S) para os quais o dispositivo pode enviar dados. (Consulte os comandos xCommand HttpClient Allow Hostname.)

  • O número de solicitações HTTP(S) simultâneas é limitado.

As configurações referidas neste artigo estão disponíveis tanto na interface web do dispositivo quanto no API. Os comandos estão disponíveis através do API. Leia o artigo Configurações avançadas para obter mais informações sobre como acessar a interface da Web e usar a API.

Lista de servidores HTTPs permitidos

O administrador do sistema pode usar estes comandos para configurar e manter uma lista de até dez servidores HTTP(S) autorizados (hosts):

  • xCommand HttpClient Allow Hostname Add Expression: <Expressão regular que corresponde ao nome do host ou endereço IP do servidor HTTPS>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClient Allow Hostname Remove Id: <ID de uma entrada na lista >

Se a lista contiver entradas de servidor, você só poderá enviar solicitações HTTPs para esses servidores. No entanto, se a lista estiver vazia, você poderá enviar solicitações para qualquer servidor HTTPs.

A verificação em relação à lista de permitidos servidores é executada ambos ao usar vulneráveis (HTTP) e transferência (HTTPS) segura de dados.

HTTPS sem validação de certificado

Ao enviar solicitações em HTTPS, o dispositivo verificará o certificado do servidor HTTPS por padrão. Se o certificado do servidor HTTPS encontrado não for válido, você receberá uma mensagem de erro. O dispositivo não envia quaisquer dados para que o servidor.

Recomendamos usar HTTPS com validação do certificado. Se a validação do certificado não for possível, o administrador do sistema poderá definir HttpClient > AllowInsecureHTTPS como Ativado ( xConfiguration HttpClient AllowInsecureHTTPS: Ativado ). Assim, será possível usar o HTTPS sem validar o certificado do servidor.

Envio de solicitações HTTPs

Quando o recurso de solicitação do cliente HTTP(S) for ativado, você poderá usar os seguintes comandos para enviar solicitações para um servidor HTTP(S). O <method> é Post, Put, Patch, Get ou Delete.

  • xCommand HttpClient <Método> [AllowInsecureHTTPS: <True/False>] [Cabeçalho: <Texto do cabeçalho>] [ResponseSizeLimit: <Tamanho máximo de resposta>] [ResultBody: <None/PlainText/Base64>] [Tempo limite: <Período de tempo limite>] Url: <URL para onde enviar a solicitação>

Adicionar campos de cabeçalho é opcional e você pode adicionar até 20 campos.

O parâmetro AllowInsecureHTTPS apenas funcionará se o administrador do sistema tiver permitido o uso de HTTPS sem precisar validar o certificado do servidor. Se este for o caso, você poderá enviar dados para o servidor sem validar o certificado do servidor se o parâmetro estiver definido como True. Se você deixar o parâmetro em branco ou defini-lo como False, os dados não serão enviados caso a validação do certificado falhe.

O parâmetro ResposenSizeLimit é o tamanho máximo do Payload (bytes) que o dispositivo aceita como resposta do servidor. Se a carga útil da resposta for maior que o tamanho máximo, o comando retornará um erro de status. A mensagem de erro informa que o tamanho máximo do arquivo foi excedido. No entanto, isso não afeta o lado do servidor; o servidor recebeu e processou a solicitação corretamente.

Use o parâmetro ResultBody para decidir como formatar o corpo da resposta HTTP do servidor no resultado do comando. Você tem três opções:

  • None: não inclua o corpo da resposta HTTP no resultado do comando.

  • Base64: o Base64 codifica o corpo antes de incluí-lo no resultado.

  • PlainText: inclua o corpo no resultado como texto sem formatação. Se a resposta contiver letras não imprimíveis, o comando retornará um erro de status com uma mensagem informando que foram encontrados dados não imprimíveis.

Use o parâmetro Timeout para definir um período de tempo limite (segundos). Se a solicitação não for concluída durante esse período, a API retornará um erro.

Digite a carga (dados) logo após receber o comando. Tudo o que você digitar, inclusive quebras de linha, fará parte da carga. Ao finalizar, inclua uma quebra de linha ("\n") e uma linha separada contendo apenas um ponto final seguido de uma quebra de linha (". \n"). Agora o comando é executado e os dados são enviados para o servidor.

Exemplos

O corpo da mensagem está no formato JSON nos exemplos a seguir. Pode ser qualquer formato, dependendo do formato esperado do serviço que está recebendo as mensagens.

Exemplo 1: controle de dispositivo IoT usando HTTP POST

Esta é uma função de macro que ativa uma luz conectada a um Philips Hue Bridge:

 função hue_command(dados) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Tipo de conteúdo: aplicativo/json'; var comando = '{"on":true}'; xapi.command('HttpClient Put', { 'Url': url, 'Cabeçalho': cabeçalhos }, comando); } 

Você pode fazer o mesmo na linha de comando usando a API:

 xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} . 

Exemplo 2: gerar dados para uma ferramenta de monitoramento usando HTTP POST

 xcommand HttpClient Post Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Um usuário relatou um problema com este sistema","systemName":"BoardRoom 4th floor","softwareVersion": "ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} . 

Mais informações

Saiba mais sobre como usar as solicitações do cliente HTTP no Guia de personalização. Escolha a versão mais recente.

O suporte da Cisco (TAC) não é compatível com a depuração do código de terceiros, incluindo macros. Verifique https://roomos.cisco.com se precisar de ajuda com macros e códigos de terceiros.