Error 417: Expectation Failed al usar métodos HTTP en LabVIEW

Actualizado el Dec 18, 2023

Reportado en

Software

  • LabVIEW

Detalles del problema

Estoy tratando de comunicarme con mi servidor usando métodos HTTP, pero el VI HTTP devuelve Error 417: Expectation Failed . ¿Qué causa este error y cómo puedo solucionarlo?

Solución

El protocolo HTTP / 1.1 define el estado 100 (Continuar, Continue), que permite a un cliente verificar si un servidor está dispuesto a aceptar una solicitud antes de enviar el cuerpo del mensaje. El proceso es el siguiente:
  1. El cliente desea enviar al servidor un mensaje de solicitud.
  2. El cliente envía un encabezado de solicitud que contiene Expect: 100-continue .
  3. El servidor devuelve el estado 100 (Continue) o 417 (Expectation Failed) .
  • 100 (Continue) significa que el servidor acepta la solicitud y el cliente puede continuar con el envío del cuerpo de la solicitud.
  • 417 (Expectation Failed) significa que el servidor rechaza la solicitud.

Al usar ciertos métodos HTTP en la paleta de clientes HTTP , LabVIEW agregará automáticamente la expectativa 100 - continue al encabezado de la solicitud cuando el mensaje tenga 1024 caracteres o más. Esto puede causar problemas si el servidor siempre responde con 417 (Expectation Failed) o no sabe cómo responder adecuadamente a la expectativa.

Debido a que las funciones del Cliente HTTP no le dan la opción de deshabilitar 100 - continue para mensajes más largos (más de 1024 caracteres), la solución es crear un encabezado de solicitud HTTP desde cero que lo excluya. Los estándares para los métodos HTTP se definen en la W3C descripción del protocolo HTTP (en inglés).

Los siguientes snippets muestran un ejemplo que implementa el método HTTP POST utilizando funciones básicas y funciones de la paleta TCP Palette . Al componer cadenas de strings para solicitudes HTTP, establezca el estilo de visualización de la cadena a Backslash (\) Codes . Esto le permite corregir los caracteres no visualizables, que son necesarios para terminar los comandos correctamente.

Desde String Constant o String Control:
  • Clic derecho>>'\' Codes Display, o
  • Clic derecho>>Properties>>Display Style: Backslash (\) Codes

Nota: Esta imagen es un snippet de LabVIEW, que incluye código de LabVIEW que puede reutilizar en su proyecto. Para usar un snippet, haga clic derecho en la imagen, guárdelo en su computadora y arrastre el archivo a su diagrama de LabVIEW.

Nota: Esta imagen es un snippet de LabVIEW, que incluye código de LabVIEW que puede reutilizar en su proyecto. Para usar un snippet, haga clic derecho en la imagen, guárdelo en su computadora y arrastre el archivo a su diagrama de LabVIEW.