从 Board、Desk 和 Room 系列设备发送 HTTP 请求
list-menu反馈?
此功能使 Board、Desk 或 Room 系列设备能够通过 HTTPs 服务器发起和接收 HTTPs 请求。 这些设备支持 POST, PUT, Patch、Get 和 Delete 等方法,允许与服务器进行不同的交互。

使用宏,您可以在需要时将数据发送到 HTTPs 服务器。 您可以控制发送哪些数据及其组织方式,从而可以轻松调整数据以用于现有服务。

安全措施:

  • 默认情况下,HTTPs 客户端请求功能处于禁用状态。 系统管理员必须通过将 HttpClient> Mode 设置为 On(xConfiguration HttpClient Mode:On 明确启用该功能。

  • 系统管理员可以通过将 HttpClient > AllowHTTP 设置为 False (xConfiguration HttpClient AllowHTTP:False阻止使用 HTTP。

  • 系统管理员可以指定允许设备向其发送数据的 HTTPs 服务器列表。 (请参阅 xCommand HttpClient 允许主机名命令 。)

  • 并发 HTTP 请求的数量是有限的。

本文中提到的配置既来自设备的 Web 界面,也有空在 API 中。 命令通过 API 有空。 阅读高级设置一文 ,了解如何访问 Web 界面和使用 API。

允许的 HTTPs 服务器列表

系统管理员可以使用这些命令来设置和维护最多十个允许的 HTTPs 服务器(主机)的列表:

  • xCommand HttpClient 允许主机名添加表达式:<与 HTTPs 服务器的主机名或 IP 地址匹配的正则表达式>

  • xCommand HttpClient 允许主机名清除

  • xCommand HttpClient 允许主机名列表

  • xCommand HttpClient 允许主机名删除列表中的条目 ID:<ID>

如果列表包含服务器条目,则只能向这些服务器发送 HTTPs 请求。 但是,如果列表为空,则可以向任何 HTTPs 服务器发送请求。

当使用不安全(HTTP)和安全(HTTPS)数据传输时,都会执行针对允许服务器列表的检查。

不进行证书验证的 HTTPS

通过 HTTPS 发送请求时,设备默认检查 HTTPS 服务器的证书。 如果未发现 HTTPS 服务器证书有效,您会收到一条错误消息。 设备不会向该服务器发送任何数据。

我们建议将 HTTPS 与证书验证结合使用。 如果无法进行证书验证,系统管理员可以将 HttpClient >AllowInsecureHTTPS 设置为 On xConfiguration HttpClient AllowInsecureHTTPS:On )。 这允许在不验证服务器证书的情况下使用 HTTPS。

发送 HTTPs 请求

启用 HTTPs 客户端请求功能后,您可以使用以下命令向 HTTPs 服务器发送请求。 <method> 为 POST PUT Patch Get 或删除

  • xCommand HttpClient <Method> [AllowInsecureHTTPS:<True/False>] [标头:<标头文本>] [ResponseSizeLimit:<最大响应大小>] [ResultBody:<None/PlainText/Base64>] [超时:<超时期限>] URL:<要将请求发送到的 URL>

添加标题字段是可选的,您最多可以添加 20 个字段。

仅当系统管理员允许使用 HTTPS 而不验证服务器证书时,AllowInsecureHTTPS 参数才有效。 如果是这样,如果参数设置为 True ,则可以在不验证服务器证书的情况下将数据发送到服务器。 如果省略该参数或将其设置为 False ,则在证书验证失败时不会发送数据。

ResposenSizeLimit 参数是设备作为服务器响应接受的最大有效负载大小(字节)。 如果响应有效负载大于此最大大小,则该命令将返回状态错误。 错误消息指出已超出最大文件大小限制。 但是,这对服务器端没有影响;服务器已正确接收并处理请求。

使用 ResultBody 参数决定如何在命令结果中设置来自服务器的 HTTP 响应正文的格式。 您有三种选择:

  • :不要在命令结果中包含 HTTP 响应的正文。

  • Base64 :Base64 在将正文包含在结果中之前对其进行编码。

  • 纯文本 :将正文作为纯文本包含在结果中。 如果响应包含不可打印的字母,则该命令将返回状态错误,并显示一条消息,指出遇到不可打印的数据。

使用 Timeout 参数设置超时时间(秒)。 如果在此期间未完成请求,则 API 将返回错误。

发出命令后直接输入有效负载(数据)。 您输入的任何内容(包括换行符)都是有效负载的一部分。 完成后,以换行符(“\n”)和仅包含一个句点后跟换行符(“.\n”)的单独行结束。 现在执行命令,并将数据发送到服务器。

示例

在这两个示例中,消息的正文都是 JSON。 它可以是任何格式,具体取决于接收消息的服务的预期格式。

示例 1:使用 HTTP POST 的 IoT 设备控制

下面是一个宏函数,用于打开连接到飞利浦 Hue 桥接器的灯:

 function hue_command(data){ var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Content-Type:application/json'; var command = '{“on”:true}'; xapi.command('HttpClient PUT',{ 'url':url,'Header':headers },command); } 

您可以在命令行中使用 API 执行相同的操作:

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

示例 2:使用 HTTP POST 将数据发布到监视工具

 xcommand HttpClient POST Header:“Content-Type:application/json”URL:“https://mymonitoringserver.com/service/devicemonitoring”{“Message”:“一位用户报告了该系统的问题”,“systemName”:“BoardRoom 4th floor”,“softwareVersion”:“ce9.6.0”,“softwareReleaseDate”:“2018-12-13”,“videoMonitors”:“Dual”} . 

更多信息

有关如何使用 HTTP 客户端请求的更多详细信息,请参阅 自定义指南 。 选择最新版本。

Cisco 支持(TAC)不支持调试第三方代码,包括宏。 如果您需要有关宏和第三方代码的帮助,请查看 https://roomos.cisco.com

这篇文章对您有帮助吗?
这篇文章对您有帮助吗?