《用于物联网的Arduino项目开发:实用案例解析》—— 3.2 HTTP

简介: 网站使用超文本传输协议(Hyper Text Transfer Protocol,HTTP)。HTTP支持多种数据传输的方法,在这个作品中,我们会用其中两种较常用的方法:GET和POST。GET和POST方法要做的事情是一样的,所以代码也很相似,它们的不同在于请求的格式略有变化。

本节书摘来自华章出版社《用于物联网的Arduino项目开发:实用案例解析》一 书中的第3章,第3.2节,作者[美]安德尔·杰韦德(Adeel Javed),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 HTTP

网站使用超文本传输协议(Hyper Text Transfer Protocol,HTTP)。HTTP支持多种数据传输的方法,在这个作品中,我们会用其中两种较常用的方法:GET和POST。GET和POST方法要做的事情是一样的,所以代码也很相似,它们的不同在于请求的格式略有变化。与POST相比,GET所能发送的数据量是有限制的。POST还被认为比GET要略为安全一些。根据你的需要,你可以决定哪个方法更适用。图3-1给出了设备和HTTP服务器之间的高层交互。

e496386b9a7390cc566fbe14d86876aeda8da6f0

所需的硬件、软件和电路,请阅读2.3节。

3.2.1 代码(Arduino)

接下来,我们来写用WiFi连接Arduino和互联网,并通过HTTP协议发送测试数据给服务器的代码。
启动Arduino IDE,输入下面的代码,或者从本书的网站下载代码文件然后打开。所有的文件都在单个源文件(*.ino)中,不过为了便于理解和重用,这个代码被分成四个部分:

  • 外部库
  • 互联网连接(无线)
  • 数据发布(HTTP)
  • 标准函数

外部库

代码的第一部分引入了运行代码所需的全部外部库。这一部分的代码和程序2-6是完全一样的。

互联网连接(无线)

代码的第二部分定义了连接互联网要用的变量、常量和函数。在这里使用了程序2-7、程序2-8和程序2-9中的代码。
数据发布
代码的第三部分定义了将来发送给使用HTTP的服务器要用到的变量、常量和函数。
程序3-1首先定义了Arduino要连接和发送数据的服务器的地址和端口。对于这个作品来说,可以把数据发布到www.httpbin.org,这是一个开放可用的测试服务器,只是会把收到的请求数据和一些额外的数据一起回送。在后面的作品中会使用能处理请求的数据的服务器。

1c27abf04ae50a8a7c2e86791a0a002477f154be

程序3-2里的doHttpGet()函数封装了为GET方法准备请求数据的所有细节,它会连接到服务器然后发送请求。
接下来,在一个if语句中,用client.connect(server, port)来尝试连接服务器。如果连接成功,就准备请求数据。
在使用GET方法的请求中,数据是以名值对格式作为URL的一部分被发送的。
最后,用client.println()方法把HTTP请求发送给服务器。这个方法会通过网络把命令发送给服务器,然后接收服务器的响应。

ee40c9fb974c701e7c11a201459696e92734b0c3 3e4908b7d0aa58b551937deb018fab9d0d7d4998

这个代码是用来发送HTTP GET请求的,不过,前面提到过,这种方法有数据长度的限制,如果要突破这个限制,就要使用HTTP POST方法。
程序3-3的doHttpPost()函数把POST方法的所有准备工作封装了起来,它会连接到服务器,然后发送请求。
在一个if语句中,用client.connect(server, port)来尝试连接服务器。到这里,代码和用HTTP GET做请求是相似的。如果连接成功,就准备请求的数据。
用POST方法做请求的时候,数据也是以名值对的格式成对出现的,但是这些数据是请求的一部分(而不是网址的一部分)。从程序3-3可以看出,发送一个HTTP POST请求需要额外的头部数据。
最后,用client.println()方法把HTTP请求发送给服务器。这个方法会通过网络把命令发送给服务器,然后接收服务器响应。

725acab5c2b52f5b2a52225099633a3df069594b d2ade9631c2526095acb6cbea7851b005a094f84

从Arduino向服务器发布数据的大致过程基本如此。

标准函数

代码的第四部分和第五部分实现了Arduino标准的setup()和loop()函数。
如程序3-4所示,setup()函数初始化串口,然后通过调用doHttpGet()函数来做HTTP GET请求,或是通过调用doHttpPost()函数来做HTTP POST请求。

bb19b86d5a68a42b6c53d7ed4150e4209a074877

要在loop()函数里加上代码来读取服务器的响应。这个作品不会对从传感器发送过去的数据做任何服务器端的处理,我们所用的测试服务器只会在响应中把全部的请求数据重复发回来,所以只要读取响应,然后在串口监视器输出即可。
根据程序3-5,首先检查WiFiClient里是否有字节可以读,读取所有的字节,然后在串口监视器打印出来。一旦读取了全部字节并打印出来,就停止这个客户端对象。

edb3b269e5af4f99870b614a1ba2950b57d1fcd1 f01f6f8f2b669b89cb37b58f458616d5e6f009c9

至此,完成了编写Arduino代码。

3.2.2 最终的作品

要测试这个应用,按照第1章所介绍的,校验然后上传代码到Arduino。代码上传后,打开串口监视器会看到如图3-2所示的HTTP GET日志消息,或是图3-3所示的HTTP POST日志消息。

4babb48655194057ae6dd1e19271ea866cd61433 285a95633e107bee8f948eeadd4d55c3ca801cfa
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
4月前
|
数据采集 人工智能 安全
数据治理的实践与挑战:大型案例解析
在当今数字化时代,数据已成为企业运营和决策的核心资源。然而,随着数据量的爆炸性增长和数据来源的多样化,数据治理成为了企业面临的重要挑战之一。本文将通过几个大型案例,探讨数据治理的实践、成效以及面临的挑战。
数据治理的实践与挑战:大型案例解析
|
6天前
|
缓存 安全 网络安全
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
33 17
|
2月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
282 75
|
1天前
|
数据采集 监控 安全
动态HTTP代理IP的使用案例与成功经验分享有哪些?
在信息化时代,网络不可或缺。动态HTTP代理IP广泛应用于网络爬虫、信息安全保护、安全访问站点和市场调研等领域。通过选择合适的代理服务、合理配置请求频率、监控IP状态、使用代理池及结合其他技术,用户可提升工作效率和数据安全性。
12 5
|
28天前
|
安全 网络协议 网络安全
解析HTTP代理服务器不稳定致使掉线的关键原因
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理服务器掉线原因主要包括:1. 网络问题,如本地网络不稳定、路由复杂;2. 服务器质量差、IP资源不稳定;3. 用户配置错误、超时或请求频率异常;4. IP失效或协议不兼容。这些问题会影响连接稳定性。
66 8
|
2月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
2月前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
3月前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
|
3月前
|
Prometheus 监控 Cloud Native
实战经验:成功的DevOps实施案例解析
实战经验:成功的DevOps实施案例解析
131 6
|
4月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
111 5

相关产品

  • 物联网平台
  • 推荐镜像

    更多