为了让服务器能发送消息给终端设备,需要让服务器端API与云端互通,从而通过向API的服务端地址发送HTTP GET/POST请求,并按照结构说明在请求中加入响应请求参数来完成相应的调用。根据请求的处理情况,系统会返回处理结果。
一、调用方式
1、请求结构
IoT API的服务器接入地址为:
华东2:iot.cn-shanghai.aliyuncs.com
通信协议
支持通过HTTP或HTTPS通道进行请求通信。为了更高的安全性,推进使用HTTPS通道发送请求。
请求方法
支持HTTP GET方法发送请求,该方式下请求参数需要包含在请求的URL中,如果是get需要对参数进行urlencode,也可以使用POST。
请求参数
每个请求都需要指定要执行的操作,即Action参数(例如Sub),以及每个操作都需要包含的公共请求参数和指定操作所特有的请求参数。
字符编码
请求及返回结构都使用UTF-8字符集进行编码
2、公共参数
公共请求参数是指每个接口都需要使用到的请求参数。
公共返回参数是指用户发送的每次接口调用请求,无论成功与否,系统都会返回一个唯一识别码RequestId给用户。
3、返回结果
调用API服务后返回数据采用统一格式,返回的HTTP状态码为2xx,代表调用成功;返回4xx或者5xx的HTTP状态码表示调用失败。调用成功返回的数据格式主要有XML和JSON两种,外部系统可以在请求时传入参数来制定返回的数据格式,默认为XML格式。示例中做了格式化处理,实际返回结果无换行、缩进等处理。
成功结果
XML示例JSON示例
错误结果
调用接口出错后,将不会返回结果数据。调用方可根据每个接口对应的错误码以及公共错误码来定位错误原因。当调用出错时,HTTP请求返回一个4xx或5xx的HTTP状态码。返回的消息体中是具体的错误代码及错误信息。另外还包含一个全局唯一的请求ID:RequestId和一个该次请求访问的站点ID:HostId。
XML示例
JSON示例
4、签名机制
IOT套件会对每个访问的请求进行身份验证,故无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。☞☞☞阿里云官方文档
二、SDK安装及使用参考
以Python SDK为例,公共参数为:
1、引入Python SDK
- 安装Python SDK包:
安装过程中出现以下问题:
问题原因在于缺少python-devle, libffi-devel, openssl-devel功能模块,命令如下
yum install gcc libffi-devel python-devel openssl-devel
安装Python SDK包成功如下:
- 在Python文件中引入Python SDK相关文件
2、初始化
3、发起调用
以publish数据到设备为例:
三、接口列表
接口列表包括:创建产品、修改产品信息、查询产品的设备列表、设备注册、批量申请设备、查询批量设备的申请状态、查询批量生成的设备信息、根据设备名称查询设备信息、批量获取设备状态、保存设备属性、查询设备属性列表、删除设备属性、发布消息到Topic、发消息给设备并同步返回响应、发布广播信息、查询设备影子、更新设备影子。