中国移动OneNet平台上传GPS数据JSON格式
2016-08-01 20:58
477 查看
最终目的输出
POST /devices/3225187/datapoints HTTP/1.1 api-key: R9xO5NZm6oVI4YBHvCPKEqtwYtMA Host: api.heclouds.com Content-Length:81 {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}
1. 使用arduino代码组合出来HTTP头
使用OneNet官方提供的Httppacket库
#include <HttpPacket.h> HttpPacketHead packet; void setup() { // put your setup code here, to run once: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } // put your main code here, to run repeatedly: // char *p = "{\"datastreams\":[{\"id\":\"sys_time\",\"datapoints\":[{\"value\":50}]}]}"; char *p = "{\"datastreams\":[{\"id\":\"location\",\"datapoints\":[{\"value\":{\"lon\":106,\"lat\":29}}]}]}"; packet.setHostAddress("api.heclouds.com"); packet.setDevId("3225187"); //device_id packet.setAccessKey("R9xO5NZm6oVI4YBHvCPKEqtwYtMA"); //API_KEY // packet.setDataStreamId("<datastream_id>"); //datastream_id // packet.setTriggerId("<trigger_id>"); // packet.setBinIdx("<bin_index>"); /*create the http message about add datapoint */ packet.createCmdPacket(POST, TYPE_DATAPOINT, p); if (strlen(packet.content)) Serial.print(packet.content); Serial.print(p); Serial.println("\n"); }
2.使用JSON库合成JSON数据
#include <ArduinoJson.h> void setup() { Serial.begin(9600); StaticJsonBuffer<200> jsonBuffer; JsonObject& lon_lat = jsonBuffer.createObject(); lon_lat["lon"] = 106; lon_lat["lat"] = 29; JsonObject& value = jsonBuffer.createObject(); value["value"] = lon_lat; JsonObject& id_datapoints = jsonBuffer.createObject(); id_datapoints["id"] = "location"; JsonArray& datapoints = id_datapoints.createNestedArray("datapoints"); datapoints.add(value); JsonObject& myJson = jsonBuffer.createObject(); JsonArray& datastreams = myJson.createNestedArray("datastreams"); datastreams.add(id_datapoints); myJson.printTo(Serial); Serial.print("\r\n\r\n"); //格式化输出 myJson.prettyPrintTo(Serial); char p[200]; Serial.print("\r\n---------\r\n"); int num = myJson.printTo(p,sizeof(p)); Serial.print(p); Serial.print("\r\n============\r\n"); Serial.print(num); } void loop() { // not used in this example }
串口输出效果
{"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]} { "datastreams": [ { "id": "location", "datapoints": [ { "value": { "lon": 106, "lat": 29 } } ] } ] } --------- {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]} ============ 81
3. 综合HTTP头和JSON输出需要的POST请求
#include <HttpPacket.h> #include <ArduinoJson.h> HttpPacketHead packet; void setup() { // put your setup code here, to run once: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } //合成POST请求 StaticJsonBuffer<200> jsonBuffer; JsonObject& lon_lat = jsonBuffer.createObject(); lon_lat["lon"] = 106; lon_lat["lat"] = 29; JsonObject& value = jsonBuffer.createObject(); value["value"] = lon_lat; JsonObject& id_datapoints = jsonBuffer.createObject(); id_datapoints["id"] = "location"; JsonArray& datapoints = id_datapoints.createNestedArray("datapoints"); datapoints.add(value); JsonObject& myJson = jsonBuffer.createObject(); JsonArray& datastreams = myJson.createNestedArray("datastreams"); datastreams.add(id_datapoints); char p[200]; int num = myJson.printTo(p,sizeof(p)); packet.setHostAddress("api.heclouds.com"); packet.setDevId("3225187"); //device_id packet.setAccessKey("R9xO5NZm6oVI4YBHvCPKEqtwYtMA"); //API_KEY // packet.setDataStreamId("<datastream_id>"); //datastream_id // packet.setTriggerId("<trigger_id>"); // packet.setBinIdx("<bin_index>"); /*create the http message about add datapoint */ packet.createCmdPacket(POST, TYPE_DATAPOINT, p); if (strlen(packet.content)) Serial.print(packet.content); Serial.print(p);
成功输出
POST /devices/3225187/datapoints HTTP/1.1 api-key: R9xO5NZm6oVI4YBHvCPKEqtwYtMA Host: api.heclouds.com Content-Length:81 {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}
相关文章推荐
- ASP.NET MVC上传文件成功返回Json格式数据弹出下载框解决方案
- ADO.NET Data Service如何直接支持用Json格式返回数据
- Asp.net MVC 使用json数据格式交互
- asp.net和Jquery中详细解析json数据格式!(有实例)
- ASP.NET 读取Json格式数据
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- ADO.NET Data Service如何直接支持用Json格式返回数据
- Asp.net/Jquery/JS中各种数据转换为【JSON数据格式】的类!(相当好,转)
- 讲解asp.net中Jquery解析json数据格式相关知识
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及文件上传的部分
- array grid的简单使用.根据官方示例改写(asp.net).json数据格式.
- Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据
- 再谈谈ADO.NET Data Service 数据格式(xml和json)
- asp.net数据库生成LigerUi树Tree结构Json格式数据(有点绕,附基本源代码)
- 使用Jquery提交Json格式的数据到Asp.net程序的另类做法.
- ExtJS fileupload组件上传文件后从服务端解析JSON格式数据
- EXTJS FROM表单返回值JSON数据格式,当上传图片的时候特别注意
- Asp.net生成Extjs-Tree数据格式的json类
- Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- asp.net中Ajax技术使用Json格式传递数据