错误417:在LabVIEW中使用HTTP方法时连接失败

更新 Dec 18, 2023

适用于

软件

  • LabVIEW

问题详述

我正在尝试使用HTTP方法与服务器通信,但是HTTP VI返回Error 417: Expectation Failed 。是什么导致此错误,我该如何解决?

解决方案

HTTP / 1.1协议定义了100(继续)状态,它允许客户端在发送消息正文之前检查服务器是否愿意接受请求。该过程如下:
  1. 客户端希望向服务器发送请求消息。
  2. 客户端发送一个包含Expect: 100-continue的请求标头。
  3. 服务器发回100 (Continue)417 (Expectation Failed)状态。
  • 100 (Continue)表示服务器接受请求,客户端可以继续发送请求正文。
  • 417 (Expectation Failed)表示服务器拒绝该请求。

在“ HTTP客户端选项板”中使用某些HTTP方法时,如消息长度为1024个字符或更长,LabVIEW将自动在请求头中添加“ 100 - continue期望值”。如果服务器始终以417 (Expectation Failed)响应,或者不知道如何正确响应417 (Expectation Failed)则可能导致问题。

由于HTTP客户端功能不提供禁用100 - continue的选项100 - continue处理更长的消息(1024个以上的字符),因此解决方案是从头开始创建一个HTTP请求标头,将其排除在外。 HTTP方法的标准在W3C HTTP协议说明中定义。

下面的代码片段演示了一个示例,该示例使用基本功能和TCP Palette中的功能来实现HTTP POST方法。为HTTP请求编写字符串时,请将字符串显示样式设置为反斜杠(\)代码。这使您可以校对不可显示的字符,这是正确终止命令所必需的。

从字符串常量或字符串控件:
  • 右键单击»“ \”代码显示,
  • 右键单击»属性»显示样式:反斜杠(\)代码

注意:该图像是LabVIEW片段,其中包含可在项目中重复使用的LabVIEW代码。要使用代码段,请右键单击图像,将其保存到计算机,然后将文件拖到LabVIEW图表上。

注意:该图像是LabVIEW片段,其中包含可在项目中重复使用的LabVIEW代码。要使用代码段,请右键单击图像,将其保存到计算机,然后将文件拖到LabVIEW图表上。