2022-02-07 来源:华纳网 责任编辑:Sunny 人气:
核心提示:知识点: 连接WiFi 发送HTTP请求
知识点:

连接WiFi

发送HTTP请求
本课内容:

大家好,欢迎来到谷雨课堂

上节我们讲解了,如何扫描WiFi网络,

那么本节我们就连接到我们的网络

并且进行一次标准的HTTP请求

使用ESP32连接WiFi非常简单,简单到真的只需要一句话

WiFi.begin(id,psw);
其中id和psw是SSID和密码,

你可以在程序中的任何地方进行定义

比如在头文件中定义

const char* id="热点名称";  
const char* psw="12345678";
这个方法是异步进行的,

我们需要不断的判断是否连接成功了

WiFi.status()==WL_CONNECTED
在这里有其它的状态,大家可以选择性的判断

WL_IDLE_STATUS      = 0,
WL_NO_SSID_AVAIL    = 1,
WL_SCAN_COMPLETED   = 2,
WL_CONNECTED        = 3,
WL_CONNECT_FAILED   = 4,
WL_CONNECTION_LOST  = 5,
WL_DISCONNECTED     = 6
到这里,我们已经连接到WiFi网络了,

下一步我们将进行一次HTTP请求,

在这里我们引用一个HTTPClient的函数库

这个库是Arduino提供的标准库

#include <HTTPClient.h>
使用使用http.get方法即可完成GET请求了,

是不是非常简单,以下就是常用的方法

//实例经一个HTTP
HTTPClient http;
//准备一个URL进行请求
http.begin("http://www.hn1517.com/t.php?test=y");
//获得返回的内容
String payload = http.getString();
//释放资源
http.end();

到这里,我们本节用到的所有功能就完成了,

以下是所有源代码

/*
*  【谷雨课堂】 云物联与人工智能 No.05 连接WiFi开始访问网络吧
*/
#include "WiFi.h"
#include <HTTPClient.h>
#include "const.h"

const char* id="华纳传媒";  


void setup()
{
//初始化串口
    Serial.begin(115200);

    WiFi.begin(id,psw);
    while(WiFi.status()!=WL_CONNECTED){      //未连接上
        delay(500);
        Serial.println("正在连接...");
    }
    Serial.println("连接成功!");        //连接上
}

void loop()
{
if ((WiFi.status() == WL_CONNECTED))
    {

        HTTPClient http;

        http.begin("http://www.hn1517.com/t.php?test=y");
int httpCode = http.GET();       

if (httpCode > 0) {

            String payload = http.getString();
            Serial.println(httpCode);
            Serial.println(payload);
        }   
else
        {
            Serial.println("Error on HTTP request");
        }

        http.end();
    }

    delay(1000);

扩展阅读

关于HTTP

以下内容来源于百度百科:

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。

HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。这样的持久性连接可以明显减少请求延迟,因为在发送第一个请求之后,客户端不需要重新协商TCP 3-Way-Handshake连接。另一个积极的副作用是,通常,由于TCP的缓慢启动机制,连接随着时间的推移而变得更快。

该协议的1.1版还对HTTP / 1.0进行了带宽优化改进。例如,HTTP / 1.1引入了分块传输编码,以允许流传输而不是缓冲持久连接上的内容。HTTP流水线进一步减少了延迟时间,允许客户端在等待每个响应之前发送多个请求。协议的另一项附加功能是字节服务,即服务器仅传输客户端明确请求的资源部分。

HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

完整的源代码可以登录【华纳网】下载。

https://www.worldwarner.com/










免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。