C# 基于OneNet 的物联网数据通信

本篇简介包含两部分:1、数据向OneNet平台的上传;2、数据从OneNet平台的下载。

1、数据向OneNet平台的上传

1.1 上传数据采用POST方式:
public void Post() { pictureBox1.BackColor = Color.Gray; string url =
"http://api.heclouds.com/devices/503683965/datapoints?"; HttpWebRequest request
= (HttpWebRequest)WebRequest.Create(url); request.Method = "POST";
SetHeaderValue(request.Headers, "api-key",
"dTOsflbiN1YGgUjIgNYjY3TBigw=");//设备API地址和 首部参数 request.Host =
"api.heclouds.com"; request.ProtocolVersion = new Version(1, 1); string Cod =
"{\"datastreams\":[{\"id\":\"temperature\",\"datapoints\":[{\"value\":\"" +
textBox4.Text + "\"}]},{\"id\":\"RH\",\"datapoints\":[{\"value\":\"" +
textBox5.Text + "\"}]},{\"id\":\"state\",\"datapoints\":[{\"value\":\"" +
textBox3.Text + "\"}]}]}"; byte[] data = Encoding.UTF8.GetBytes(Cod);
request.ContentLength = data.Length; using (Stream reqStream =
request.GetRequestStream()) { reqStream.Write(data, 0, data.Length);
reqStream.Close(); } HttpWebResponse resp =
(HttpWebResponse)request.GetResponse(); Stream stream =
resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new
StreamReader(stream, Encoding.UTF8)) { textBox6.Text = reader.ReadToEnd();
pictureBox1.BackColor = Color.Lime; } // return result; }//面向OneNet的发送
1.2 HTTP协议报文头编辑函数
public static void SetHeaderValue(WebHeaderCollection header, string name,
string value)// HTTP协议报文头加入 { var property =
typeof(WebHeaderCollection).GetProperty("InnerCollection",
BindingFlags.Instance | BindingFlags.NonPublic); if (property != null) { var
collection = property.GetValue(header, null) as NameValueCollection;
collection[name] = value; } }
2、数据从OneNet平台的下载

2.1 数据获取采用Get模式
private void Get(object sender, EventArgs e)//连接服务器并获取数据 { string url =
"http://api.heclouds.com/devices/503683965/datapoints?";//设备地址 HttpWebRequest
request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET";
SetHeaderValue(request.Headers, "api-key",
"dTOsflbiN1YGgUjIgNYjY3TBigw=");//设备API地址和 首部参数 request.Host =
"api.heclouds.com"; request.ProtocolVersion = new Version(1, 1);
request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response =
(HttpWebResponse)request.GetResponse(); Stream myResponseStream =
response.GetResponseStream(); StreamReader myStreamReader = new
StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString
= myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close();
textBox5.Text = retString; }
2.2 HTTP协议报文头编辑
public static void SetHeaderValue(WebHeaderCollection header, string name,
string value)// HTTP协议报文头加入 { var property =
typeof(WebHeaderCollection).GetProperty("InnerCollection",
BindingFlags.Instance | BindingFlags.NonPublic); if (property != null) { var
collection = property.GetValue(header, null) as NameValueCollection;
collection[name] = value; } }

之前自己做的一个小程序,可以参考:https://download.csdn.net/download/lnwin521/10808227
<https://download.csdn.net/download/lnwin521/10808227>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信