好多人找的arduinojson库和httppacket库文件包:
HTTP数据封装Ardiuno SDK说明文档 RestfulAPI包括资源的增、删、改、查四类操作,其中删、查操作不带HTTP内容,只有HTTP报头。增、改操作有HTTP报头,后面带有JSON格式HTTP内容。报头数据URL带有可选参数,都是以“?”开始,以“&”分隔。下列操作的HTTP报文,红色代表有URL可选参数。 HTTP报由报头和HTTP内容组成。HTTP内容是JSON格式字符串,可以通过Ardiuno的JSON库实现HTTP内容的封装,本文档主要说明HTTP包头封装的封装方法和接口实现。
1.报文总结
1.1 查询操作
//查看用户
GET /user HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查询设备
GET /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
GET /devices HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查看数据流
GET /devices/<devices_id>/datastreams/<datastream_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
GET /devices/<devices_id>/datastreams?datastream_ids=temp,gps HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查看数据点
GET /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查看触发器
GET /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查看API权限
GET /keys HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//查看二进制数据
GET /bindata/<index> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//RestAPI日志查询
GET /logs/<device_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//历史数据查询
GET /datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
1.2 新增操作
//新增设备
POST /devices HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//新增数据流
POST /devices/<devices_id>/datastreams HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//新增数据点
POST /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//新增触发器
POST /triggers HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//新增API权限
POST /keys HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
///新增二进制数据
POST /bindata HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
1.3 更新操作
//更新设备
PUT /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//更新数据流
PUT /devices/<devices_id>/datastreams/<datastream_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//更新触发器
PUT /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//更新API权限
PUT /keys/<key_string> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
//发送数据到edp设备
POST /cmds/<device_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}
1.4 删除操作
//删除设备
DELETE /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//删除数据流
DELETE /devices/<devices_id>/datastreams/<datastream_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//删除数据点
DELETE /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//删除触发器
DELETE /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//删除API权限
DELETE /keys/<key_string> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
//删除二进制数据
DELETE /bindata/<index> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n
2.SDK对外接口说明
/**********************************************************************
* 功能描述: 设置http包头主机地址字符串
* @param param1 char* hostAddr 服务器地址字符串指针
* @return void **********************************************************************/
void HttpPacketHead::setHostAddress(char* hostAddr)
/**********************************************************************
* 功能描述: 更新单个URL参数
* @param param1 char* key 参数名字字符串指针
* @param param2 char* value 参数的值字符串指针
* @return void **********************************************************************/
void HttpPacketHead::updateUrlParameterWith(char* key, char* value)
/**********************************************************************
* 功能描述: 清除所有之前设置的URL参数
* @param void
* @return void **********************************************************************/
void HttpPacketHead::clearUrlParameter(void)
/**********************************************************************
* 功能描述:删除一个之前已经存在的URL参数,如果没有这
* 个参数 不做任何操作
* @param char* key 参数名称
* @return void **********************************************************************/
void HttpPacketHead::removeUrlParameter(char* key)
/**********************************************************************
* 功能描述:添加一个url 参数http包中,如果存在该参数,
* 不做任何操作.
* @param1 char* key 参数名称
* @param2 char* value 参数值
* @return void **********************************************************************/
void HttpPacketHead::addUrlParameter(char* key, char* value)
/**********************************************************************
* 功能描述:设置http包中要要访问的设备id
* @param1 char* Dev_Id 设备ID 字符串
* @return void **********************************************************************/
void HttpPacketHead::setDevId(char* Dev_Id)
/**********************************************************************
* 功能描述:设置http包中要要访问的数据流ID
* @param1 char* StreamId 数据流ID 字符串
* @return void **********************************************************************/
void HttpPacketHead::setDataStreamId(char* StreamId)
/**********************************************************************
* 功能描述:设置http包中要要访问的触发器ID
* @param1 char* TrigId 触发器ID 字符串
* @return void **********************************************************************/
void HttpPacketHead::setTriggerId(char* TrigId)
/**********************************************************************
* 功能描述:设置http包中要要访问的bin文件索引
* @param1 char* Idx 文件索引
* @return void **********************************************************************/
void HttpPacketHead::setBinIdx(char* Idx)
/**********************************************************************
* 功能描述:添加一个API key,只有在API 更新操作中才会设置.
* @param1 char* key key字符串
* @return void **********************************************************************/
void HttpPacketHead::addAPIKey(char* key)
/**********************************************************************
* 功能描述:设置访问设备所需的密钥.
* @param1 char* key key字符串
* @return void **********************************************************************/
void HttpPacketHead::setAccessKey(char* key)
/**********************************************************************
* 功能描述:产生http 数据报头,仅限POST、PUT操作
* @param1 OPS_TYPE operType 操作类型
* @param2 RESRC_TYPE type 资源类型
* @param3 char* jsonData http内容json结构
* @return RET_ERR 产生数据包失败,可能因为参数传入不当 RET_OK 产生数据包成功 **********************************************************************/
intHttpPacketHead::createCmdPacket(OPS_TYPE operType, RESRC_TYPE type, char* jsonData)
/**********************************************************************
int HttpPacketHead::createCmdPacket(OPS_TYPE operType, RESRC_TYPEtype) * 功能描述:产生http 数据报头,仅限DELETE、GET操作
* @param1 OPS_TYPE operType 操作类型
* @param2 RESRC_TYPE type 资源类型
* @return RET_ERR 产生数据包失败,可能因为参数传入不当 RET_OK 产生数据包成功
**********************************************************************/
3.资源类型说明
TYPE_USER 用户
TYPE_DEV 设备
TYPE_DATASTREAM 数据流
TYPE_DATAPOINT 数据点
TYPE_TRIGGER 触发器
TYPE_APIKEY API-KEY
TYPE_BINDATA 二进制数据
TYPE_APILOG API日志
TYPE_HISTORYDATA 历史数据
4. 操作类型说明
POST 新增
PUT 更新
GET 查询
DELETE 删除
5. 约束限制
1)一个HTTP报报头最大不能超过300字节;
2)一个HTTP报URL可选参数个数不超过7个;
3)一个HTTP报所有URL参数字符串总长度不超过150字节。
6. 编程举例
Ardiuno代码段:
HttpPacketHead packet;
packet.setHostAddress("api.heclouds.com");//设置主机地址 packet.setDevId("70290");//设置设备ID packet.setAccessKey("<Your access api-key>");//设置访问密钥 packet.addUrlParameter("datastream_ids", "temp");//添加URL参数 packet.addUrlParameter("datastream_ids", "gps");//添加URL参数 packet.createCmdPacket(GET, TYPE_DATASTREAM);//产生查询数据流的报头 Serial.print(packet.content);
输出为:
GET /devices/70290/datastreams/?datastream_ids=temp,gps HTTP/1.1
api-key:<Your access api-key>
Host:api.heclouds.com
具体使用方法请参照示例程序。
全部资料51hei下载地址:
ArdiunoHttpSDK.rar
(1.12 MB, 下载次数: 95)
|