Inicio > Foro > Programación IEC 61131 (LogicLab) > Nuevo FB HTTPClient lanzado
tagged: HTTPClient
- Este tema tiene 9 respuestas, 3 participantes y se actualizó por última vez 4 años, hace 6 meses da Rubox.
-
autorPublicación
-
Mayo 10, 2018 en 4: 04 pm #44043Sergio BertanaAdministrador del foro
El HTTPGetPage FB ha evolucionado para convertirse en un verdadero cliente HTTP, por lo que hemos cambiado su nombre a HTTPClient (Extracto manual). Se ha añadido la posibilidad de enviar parámetros tanto en GET como en POST y recibir páginas de cualquier longitud como respuesta, en el caso de páginas muy grandes, los datos de la página recibidos también se pueden transferir a un archivo.
Adjunto un programa de muestra al tema (Descargar) con el nuevo FB, en el ejemplo en que se solicita una página en el sitio Altervista, el programa pasa en GET o POST los parámetros Dividendo y Divisor a un script PHP que realiza la división entre los valores pasados. Es posible probar el funcionamiento del script directamente de aquí. Si el script está activo, se devuelve una página con: El resultado es: 50.
Es obvio que puede probar el script modificando los valores en la dirección del navegador para obtener resultados diferentes. El propósito del FB es precisamente este apoyo del programa. SlimLine en un servicio web en la nube para realizar operaciones.
Junio 25, 2019 en 2: 29 pm #48327MarcellopartícipeEstoy usando con éxito el HTTPClient FB y ahora que lo estoy disfrutando, me gustaría poder usar este FB para configurar a través de dispositivos HTTP conectados a la red, en particular para cambiar la dirección IP, establecer parámetros, etc. Le pedí a uno de nuestros proveedores el comandos para cambiar la dirección IP de algunas sondas (KMTronic) y me enviaron esta serie de comandos (incluido el de reinicio).
Cambio IP:
POST /net_config.htm HTTP / 1.1
Anfitrión: 192.168.1.199
Conexión: keep-alive
Content-Length: 57
Control de caché: max-age = 0
Autorización: Basic YWRtaW46YWRtaW4 =
Origen: http://192.168.1.199
Solicitudes de actualización inseguras: 1
Tipo de contenido: application / x-www-form-urlencoded
User Agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 75.0.3770.100 Safari / 537.36
Acepte: texto / html, aplicación / xhtml + xml, aplicación / xml; q = 0.9, imagen / webp, imagen / apng, * / *; q = 0.8, aplicación / intercambio firmado; v = b3
árbitro: http://192.168.1.198/net_config.htm
Aceptar-Codificación: gzip, desinflar
Aceptar lenguaje: 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 Autorización: YWRtaW46YWRtaW4 básico = r Aceptar: * / * r n \ t
Configuré el FB así:
Cambio IP:
Método: 1
Dirección de host: 192.168.1.199
NombreHost: 192.168.1.198
Hostport: 80
Página: net_config.htm HTTP / 1.1
Solicitud: ip = 192.168.1.190 & gw = 192.168.1.1 & sub = 255.255.255.0 & htpt = 80
DBSize: 57Reboot:
Método: 0
Dirección de host: 192.168.1.199
NombreHost: 192.168.1.198
Hostport: 80
Página: reboot.cgi HTTP / 1.1
Solicitud: nAutorización: básica YWRtaW46YWRtaW4 = r Aceptar: * / * r n
DBSize: 61¿He "traducido" bien?
Junio 25, 2019 en 3: 14 pm #48330Sergio BertanaAdministrador del foroVeo algunas ideas confusas ...
La solicitud de conjuntos de parámetros es una solicitud en POST, por lo tanto Method: 1 es correcto, pero HostAddress e HostName deben ser la dirección IP del servidor no pueden ser diferentes… en el límite HostName podría ser el nombre de host en el caso de servidores multidominio.
In Page solo tienes que poner la página HTPP / 1.1 automáticamente la pone en el FB.
En Solicitud, colocó correctamente los datos requeridos, pero DBSize lo puso mucho más grande (yo pondría 1000).
Veo en el ejemplo que se menciona el campo Authorization: Basic YWRtaW46YWRtaW4=Esto me parece que es un campo para pasar en el encabezado de la solicitud para habilitar el comando de conjunto de parámetros. Luego cambia al parámetro Header:=ADR(Authorization: Basic YWRtaW46YWRtaW4=).
El resto parece estar bien, pero te sugiero que pruebes el comando con programas como Insomnio o Cartero, y cuando el comando funciona, espía con Wireshark lo que pasa para poder compararlo con lo que genera el HTTPClient FB.
Más simple es el comando de reinicio, un comando GET simple
Método: 0
Dirección de host: 192.168.1.199
NombreHost: 192.168.1.199
Hostport: 80
Página: reboot.cgi
Solicitud: Autorización: YWRtaW46YWRtaW4 básico =Junio 26, 2019 en 6: 55 am #48336MarcellopartícipeEn el FB no veo el parámetro Encabezado, mi HTTPClient lo obtuve de la biblioteca eLLabNetworkLib_B210.plclib.
Junio 26, 2019 en 6: 56 am #48338Sergio BertanaAdministrador del foroPubliqué la nueva versión de la biblioteca que puedes descargar desde la sección de descargas.
Octubre 19, 2019 en 7: 09 am #50230RuboxpartícipeHola, descargué la biblioteca eLLabNetworkLib_B300 de la sección de descargas. Importo el HTTPClient_v1 FB en LogicLab y si compilo todo obtengo un error eLLabNetworkLib_B300.plclib (938) error C002: LD => Token no válido.
Si elimino el FB del proyecto, compile sin errores. Donde me equivoco
Octubre 19, 2019 en 7: 11 am #50234Sergio BertanaAdministrador del foroParece que ha definido alguna variable con el nombre "LD" o algo similar, para entender debe enviar su proyecto de Logiclab a nuestro correo de soporte para que podamos verificar directamente para entender el error.
Octubre 21, 2019 en 6: 47 am #50258RuboxpartícipeBuenas noches, mi problema es que solo necesito definir un nuevo proyecto vacío, importar el HTTPClient FB, crear un programa mínimo definiendo una variable "a" y asignándole un valor arbitrario (por lo que una sola línea de programa del tipo a: = 0 ;) y compilando en LogicLab obtengo ese error, incluso sin definir una variable del tipo HTTPClient.
Si importo los otros FB de la biblioteca en el mismo proyecto no hay error, si importo HTTPClient me da el error. Y no sé cómo solucionarlo, o dónde me equivoco.
Octubre 21, 2019 en 6: 55 am #50265Sergio BertanaAdministrador del foroTu problema surge del hecho de que no has puesto el cheque en el respeto del caso en el proyecto, por defecto LogicLab lo deja inactivo, tienes que chequearlo manualmente. Encontrará una indicación como esta en muchas publicaciones del foro.
La marca siempre debe estar activada en el proyecto Sensibilidad del caso, en el menú Proyecto-> Opciones (Captura de pantalla). De esta forma, el caso de las letras se verifica en los nombres de las variables y funciones, evitando dar nombres a las variables que pueden contrastar con nombres ya predefinidos.
Luego, si desea un ejemplo completo de uso, puede consultar conocimiento relativo.
Octubre 22, 2019 en 12: 18 pm #50297RuboxpartícipeHola gracias por solucionar mi error: me golpeé la cabeza durante dos días sin que se me ocurriera que el respeto de mayúsculas / minúsculas podía provocar ese error.
Ahora construyeme sin problemas y lo más importante es que funciona.
-
autorPublicación
- Debe iniciar sesión para responder a este tema.