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(, );
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, , 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(, );
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#的源码

1. 分析了Monitor里面的源码,在onenet中使用的是HTTP协议
2. 将源码中的设备地址和秘钥替换成自己云端中去,程序中有两个的地方都要替换
云端的:

程序中的:

3. 将源码中的一部分程序注销掉,因为我们云端没有这个东西,不然的话程序运行会出现错误
1.

2.

3. 将源码注销之后运行点击自动运行就OK了,就可以看到我们云端的数据了

4. 得到云端数据之后那就好办了,用我们以前学的知识来进行制作我们的应用软件
忘记了的可以看。
001_C#我的第一个串口上位机软件
/********************************神奇的分割线********************************/

002转载----C# 基于OneNet 的物联网数据通信的更多相关文章
- 转载:基于Redis实现分布式锁
转载:基于Redis实现分布式锁 ,出处: http://blog.csdn.net/ugg/article/details/41894947 背景在很多互联网产品应用中,有些场景需要加锁处理,比如 ...
- (转载)Eclipse基金会涉足物联网,M2M标准是否已获东风?
摘要:相信大部分的开发者都使用过Eclipse IDE,然而Eclipse基金会有的不只是集成开发环境,其托管的开源项目已达250余个.近日该基金会宣布启动物联网项目,旨在推动M2M标准的前行! Ec ...
- GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计
总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作. 1.设计通信接口 在设计的时候,根据职责划分,拆分成不同的应用子系统,对 ...
- 【转载】基于rasa的对话系统搭建(上)
文章介绍使用rasa nlu和 rasa core 实现一个电信领域对话系统demo,实现简单的业务查询办理功能,更完善的实现需要进一步数据的收集.demo基于玩具数据集,可以达到下面的效果: Bot ...
- 转载:基于HALCON的模板匹配方法总结
转载链接: http://blog.csdn.net/b108074013/article/details/37657801 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总 ...
- 转载 vue-awesome-swiper - 基于vue实现h5滑动翻页效果
说到h5的翻页,很定第一时间想到的是swiper.但是我当时想到的却是,vue里边怎么用swiper?! 中国有句古话叫:天塌下来有个高的顶着. 在前端圈里,总有前仆后继的仁人志士相继挥洒着热汗(这里 ...
- Obloq模块:基于ESP8266的物联网模块
OBLOQ 物联网模块 OBLOQ模块是DFRobot公司开发的一款基于ESP8266芯片的物联网通信模块.模块使用串口(TTL UART)和Arduino(或者其他单片机)通信,支持MQTT,HTT ...
- (转载)基于比较的少样本(one/few-shoting)分类
基于比较的方法 先通过CNN得到目标特征,然后与参考目标的特征进行比较. 不同在于比较的方法不同而已. 基本概念 数据集Omniglot:50种alphabets(文字或者文明); alphabet中 ...
- (转载)基于Linux C的socket抓包程序和Package分析
转载自 https://blog.csdn.net/kleguan/article/details/27538031 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MA ...
随机推荐
- Linux下的静态库与动态库的生成与调用
静态库与动态库 静态函数库 这类库的名字一般是libxxx.a,xxx为库的名字.利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行 ...
- s5p6818 从SD卡启动程序(制作SD启动卡)
背景: 最近在学习uboot,其中有一步很重要的任务就是需要实现uboot 的验证,没有办法验证uboot是不是自己做的,那么整个开发就会收到阻碍.另外,从公司现在开发的板子来看,uboot从sd卡启 ...
- Tomcat与WAS应用中间件差异化分析研究
--转载 http://blog.chinaunix.net/uid-25723371-id-5759072.html 目前我们在使用的基于JAVA的提供逻辑展现应用中间件有两种,一种是以商用软件WA ...
- rman备份跳过read only数据文件,减少备份总量,加快备份时间
客户需求,RMAN备份时间过长,想缩短备份时间,优化备份. 客户基于表空间进行历史数据归档的方式,将历史的表空间进行read only,想让RMAN跳过只读表空间,减少RMAN备份的数据总量,从而缩短 ...
- MyBatis 源码篇-MyBatis-Spring 剖析
本章通过分析 mybatis-spring-x.x.x.jar Jar 包中的源码,了解 MyBatis 是如何与 Spring 进行集成的. Spring 配置文件 MyBatis 与 Spring ...
- 点标记(lambda表达式+linq查询标记符)与linq语句(查询表达式)
什么是Linq表达式?什么是Lambda表达式? 参照:https://www.cnblogs.com/zhaopei/p/5746414.html
- WPF 自定义一个控件,当点击按钮是触发到ViewModel(业务逻辑部分)和Xaml路由事件(页面逻辑部分)
#region - 用于绑定ViewModel部分 - public ICommand Command { get { return (ICommand)GetValue(CommandPropert ...
- Linux 配置jdk vim和 Linux 基本操作
1下载jdk tar.gz 安装包(http://www.oracle.com/) 注意安装机器的Linux 是x86(32位)还是x64(64位)的 2使用tar -zxvf jdk.tar.gz解 ...
- HTTP参数污染(参数处理图)
- phpstorm+xdebug+mvc
前一段时间自己琢磨出来,今天又给忘了,还去t00ls发帖.... 写到这里备忘 拿这个yxcms举例子 版本: yxcms1.2.1 源码:http://pan.baidu.com/s/1pJM1CP ...