Home page > Fórum > Programação IEC 61131 (LogicLab) > Novo FB HTTPClient liberado
etiquetadas: HTTPClient
- Este tópico tem 9 respostas, 3 participantes e foi atualizado pela última vez 4 anos, 5 meses atrás da Rubox.
-
autorPublique
-
Pode 10, 2018 em 4: 04 pm #44043Sergio BertanaAdministrador do fórum
O HTTPGetPage FB evoluiu para se tornar um verdadeiro cliente HTTP, então nós mudamos seu nome para HTTPClient (Extracto manual) Adiciona-se a possibilidade de enviar parâmetros tanto em GET como em POST e de receber em resposta páginas de qualquer comprimento.No caso de páginas muito grandes, os dados da página recebidos também podem ser transferidos para um arquivo.
Anexei um programa de amostra ao tópico (Baixar) com o novo FB, no exemplo o pedido é feito de uma página no site Altervista, o programa passa em GET ou POST os parâmetros Dividend e Divisor para um script PHP que realiza a divisão entre os valores anteriores. É possível testar a operação do script diretamente daqui. Se o script estiver ativo, uma página será retornada com: O resultado é: 50.
É óbvio que você pode testar o script modificando os valores no endereço do navegador obtendo resultados diferentes. O objetivo do CE é precisamente esse apoio do programa SlimLine em um serviço da web na nuvem para executar operações.
Junho 25, 2019 em 2: 29 pm #48327MarcelloparticipanteEstou usando com sucesso o HTTPClient FB e agora que estou gostando, gostaria de poder usar este FB para configurar via dispositivos HTTP conectados à rede, em particular para alterar o endereço IP, definir parâmetros etc ... Solicitei a um de nossos fornecedores comandos para alterar o endereço IP de algumas sondas (KMTronic) e eles me enviaram esta série de comandos (incluindo o de reinicialização).
Cambio IP:
POST /net_config.htm HTTP / 1.1
Host: 192.168.1.199
Connection: keep-alive
Content-Length: 57
Controle de Cache: max-age = 0
Autorização: Básico YWRtaW46YWRtaW4 =
Origem: http://192.168.1.199
Atualização-inseguro-solicitações: 1
Tipo de Conteúdo: application / x-www-form-urlencoded
User Agent: Mozilla / 5.0 (10.0 do Windows NT; Win64; x64) AppleWebKit / 537.36 (KHTML, como o Gecko) Chrome / 75.0.3770.100 Safari / 537.36
Aceite: text / html, application / xhtml + xml, application / xml; q = 0.9, imagem / webp, imagem / apng, * / *; q = 0.8, aplicativo / troca assinada; v = b3
referer: http://192.168.1.198/net_config.htm
Accept-Encoding: gzip, deflate
Aceitar Idioma: en-US, en; q = 0.9, bg; q = 0.8
ip = 192.168.1.190 & gw = 192.168.1.1 & sub = 255.255.255.0 & htpt = 80Reboot:
GET /reboot.cgi HTTP / 1.1 r Autorização: Básico YWRtaW46YWRtaW4 = r Aceitar: * / * r n \ t
Eu configurei o FB assim:
Cambio IP:
Método: 1
HostAddress: 192.168.1.199
HostName: 192.168.1.198
Hostport: 80
Página: net_config.htm HTTP / 1.1
Solicitação: ip = 192.168.1.190 & gw = 192.168.1.1 & sub = 255.255.255.0 & htpt = 80
DBSize: 57Reboot:
Método: 0
HostAddress: 192.168.1.199
HostName: 192.168.1.198
Hostport: 80
Página: reboot.cgi HTTP / 1.1
Pedido: nAutorização: Básico YWRtaW46YWRtaW4 = r Aceitar: * / * r n
DBSize: 61Eu "traduzi" bem?
Junho 25, 2019 em 3: 14 pm #48330Sergio BertanaAdministrador do fórumEu vejo algumas idéias confusas ...
A solicitação de conjuntos de parâmetros é uma solicitação no POST, portanto Method: 1 está correto, mas HostAddress e HostName devem ser o endereço IP do servidor, não podem ser diferentes ... no limite HostName pode ser o nome do host no caso de servidores de vários domínios.
In Page você só tem que colocar a página HTPP / 1.1 coloca automaticamente no FB.
Em Request você coloca corretamente os dados requeridos, mas o DBSize coloca isso bem maior (eu colocaria o 1000).
Vejo no exemplo que o campo é mencionado Authorization: Basic YWRtaW46YWRtaW4=, isso parece-me ser um campo para passar no cabeçalho do pedido para habilitar o comando do conjunto de parâmetros. Então mude para o parâmetro Header:=ADR(Authorization: Basic YWRtaW46YWRtaW4=).
O resto parece ser Ok, mas eu sugiro que você tente o comando com programas como Insônia o Postman, e quando o comando funciona ele espia com o Wireshark o que passa para que possa ser comparado com o que o HTTPClient FB gera.
Mais simples é o comando reboot, um simples comando GET
Método: 0
HostAddress: 192.168.1.199
HostName: 192.168.1.199
Hostport: 80
Página: reboot.cgi
Pedido: Autorização: Básico YWRtaW46YWRtaW4 =Junho 26, 2019 em 6: 55 am #48336MarcelloparticipanteNo FB não vejo o parâmetro Header, meu HTTPClient obtive na biblioteca eLLabNetworkLib_B210.plclib.
Junho 26, 2019 em 6: 56 am #48338Sergio BertanaAdministrador do fórumEu publiquei a nova versão da biblioteca que você pode baixá-lo da seção de download.
Outubro 19, 2019 em 7: 09 am #50230RuboxparticipanteOlá, eu baixei a biblioteca eLLabNetworkLib_B300 da seção de download. Importo o FB HTTPClient_v1 no LogicLab e se eu compilar tudo obtenho um erro eLLabNetworkLib_B300.plclib (938) erro C002: LD => Token inválido.
Se eu excluir o FB do projeto, compile sem erros. Onde eu estou errado?
Outubro 19, 2019 em 7: 11 am #50234Sergio BertanaAdministrador do fórumParece que você definiu alguma variável com o nome "LD" ou algo semelhante, para entender você deve enviar seu projeto Logiclab para nosso e-mail de suporte para que possamos verificar diretamente para entender o erro.
Outubro 21, 2019 em 6: 47 am #50258RuboxparticipanteBoa noite, meu problema é que basta definir um novo projeto vazio, importar o HTTPClient FB, criar um programa mínimo definindo uma variável "a" e atribuindo a ela um valor arbitrário (portanto, uma única linha de programa do tipo a: = 0 ;) e compilando no LogicLab recebo esse erro, mesmo sem definir uma variável do tipo HTTPClient.
Se eu importar os outros FBs da biblioteca no mesmo projeto não há erro, se eu importar HTTPClient me dá o erro. E não sei como consertar, ou onde estou errado.
Outubro 21, 2019 em 6: 55 am #50265Sergio BertanaAdministrador do fórumSeu problema surge do fato de que você não colocou a verificação sobre o respeito das maiúsculas / minúsculas no projeto, por padrão o LogicLab o deixa inativo, você precisa verificar manualmente. Você encontrará uma indicação como essa em muitos posts do fórum.
O tiquetaque sempre deve ser ativado no projeto Sensividade do caso, no menu Projeto-> Opções (Screenshot). Dessa forma, o caso das letras é verificado nos nomes de variáveis e funções, evitando atribuir nomes a variáveis que podem contrastar com nomes já predefinidos.
Então, se você quiser um exemplo completo de uso, consulte conhecimento relativo.
Outubro 22, 2019 em 12: 18 pm #50297RuboxparticipanteBom dia, obrigada por solucionar meu erro: fiquei dois dias batendo com a cabeça sem que me ocorresse que o respeito de maiúsculas / minúsculas poderia causar aquele erro.
Agora me construa sem problemas e o mais importante é que funcione.
-
autorPublique
- Você deve estar logado para responder a este tópico.