使用宏,您可以随时将数据发送到HTTP(S)服务器。您可以控制发送的数据及其组织方式,从而轻松调整数据以与现有服务配合使用。

安全措施:

  • HTTP(S) 客户端请求功能在缺省情况下被禁用。系统管理员必须通过将 HttpClient > 模式 设置为打开 ( xConfiguration HttpClient模式:)。

  • 系统管理员可以通过设置 HttpClient > AllowHTTP False ( xConfiguration HttpClient AllowHTTP:错误 )。

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

  • 并发 HTTP(S) 请求的数量受限。

本文中提到的配置可从设备的Web接口和API中获得。命令可通过API获得。阅读高级 设置文章 ,了解如何访问 Web 界面和使用 API。

允许的 HTTP(S) 服务器列表

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

  • xCommand HttpClient允许主机名称添加表达式:

  • xCommand HttpClient 允许主机名清除

  • xCommand HttpClient 允许主机名列表

  • xCommand HttpClient允许主机名删除ID:

如果列表包含服务器条目,则只能将HTTP(S)请求发送到这些服务器。但是,如果列表为空,您可以向任何HTTP(S)服务器发送请求。

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

无证书验证的HTTPS

当通过 HTTPS 发送请求时,设备在缺省情况下会检查 HTTPS 服务器的证书。如果发现 HTTPS 服务器证书无效,您收到错误消息。设备不会向该服务器发送任何数据。

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

发送HTTP(S)请求

启用HTTP(S)客户端请求功能后,您可以使用以下命令将请求发送至HTTP(S)服务器。 发布 放置 补丁 获取 删除

  • xCommand HttpClient [AllowInsecureHTTPS: ] [Header: ] [ResponseSizeLimit: ] [ResultBody: ] [超时: ] Url:

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

AllowInsecureHTTPS 参数仅在系统管理员允许使用HTTPS而不验证服务器证书的情况下才会生效。如果是,如果参数设置为,则无需验证服务器证书,即可将数据发送到服务器。如果排除参数,或将其设置为 虚假,证书验证失败时不会发送数据。

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

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

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

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

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

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

在发出命令后,输入有效负载(数据)。您输入的包括换行在内的任何内容都是有效负载的一部分。完成后,换行(“\n”)和仅包含一段时间的分隔线,然后按换行符(“.\n”)。现在,执行命令,数据将发送至服务器。

示例

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

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

以下为一个宏函数,该宏函数会打开一个连接至一个和一个和一个高亮桥相连的浅色:

 函数 hue_command(数据) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Content-Type:应用程序/json ";var command = "{" on ": true}";xapi 命令 (' HttpClient Put ', {' Url ': url, "Header": 标头}, 命令);} 

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

 xcommand HttpClient放置标题:“内容类型:应用程序/jsonURL:"http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true}。 

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

 xcommand HttpClient Post标题:“内容类型:application/jsonURL:"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 如果您需要宏和第三方代码方面的帮助。