使用宏,您可以随时将数据发送到HTTP(S)服务器。您可以控制发送的数据及其组织方式,从而轻松调整数据以与现有服务配合使用。
安全措施:
-
HTTP(S) 客户端请求功能在缺省情况下被禁用。系统管理员必须通过将
设置为打开 (xConfiguration HttpClient模式:
)。 -
系统管理员可以通过设置
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 进行证书验证。如果无法验证证书,系统管理员可以将 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 如果您需要宏和第三方代码方面的帮助。