概述
002转载----C# 基于OneNet 的物联网数据通信
作者:lnwin521
来源:CSDN
原文:https://blog.csdn.net/lnwin521/article/details/84549606
(遇到404情况请复制粘贴后再打开)
版权声明:本文为博主原创文章,转载请附上博文链接!
首先非常感谢这位大佬的文章,对于连接onenet很有用。
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
/神奇的分割线/
那么当下载原文大佬的资源后,我们得到两个C#的源码
-
分析了Monitor里面的源码,在onenet中使用的是HTTP协议
-
将源码中的设备地址和秘钥替换成自己云端中去,程序中有两个的地方都要替换
云端的:
程序中的:
-
将源码中的一部分程序注销掉,因为我们云端没有这个东西,不然的话程序运行会出现错误
-
将源码注销之后运行点击自动运行就OK了,就可以看到我们云端的数据了
-
得到云端数据之后那就好办了,用我们以前学的知识来进行制作我们的应用软件
忘记了的可以看。
001_C#我的第一个串口上位机软件
/神奇的分割线/
最后
以上就是爱笑草莓为你收集整理的002转载----C# 基于OneNet 的物联网数据通信的全部内容,希望文章能够帮你解决002转载----C# 基于OneNet 的物联网数据通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复