zoukankan      html  css  js  c++  java
  • 【ESP8266】发送HTTP请求

    一、ESP8266简介

      ESP8266 是深圳安信可科技有限公司开发的基于乐鑫ESP8266的超低功耗的UART-WIFI模块的模组,可以方便进行二次元开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。

      核心模块处理器ESP8266在较小尺寸中继承了业界领先的Tensilical106超低功耗32位微型MCU,带有16位精简模式,支持RTOS(实时操作系统,指当外界事件或者数据变化时候能够以足够快的速度处理),集成WIFI/MAC/BB/RF/PA/LAN,板载天线。支持IEEE802.11b/g/n协议,完整的TCP/IP协议。

    二、开发环境

      开发环境采用Arduino IDE for ESP8266 采用 Arduino 语法进行编程设计。

    三、编程

     1. HTTP相关知识

        HTTP是一套计算机网络通讯规则。下来主要介绍一下HTTP消息格式。详细HTTP请求请戳链接

        

        HTTP请求数据格式:

        当浏览器发送请求是,向服务器发送了一个数据块,也就是请求信息,其中信息由三部分组成。

        1. 请求方法 URI协议/版本

        2. 请求头(Request Header)

        3. 请求正文

        eg. 

    1 GET/sample.jspHTTP/1.1
    2 Accept:image/gif.image/jpeg,*/*
    3 Accept-Language:zh-cn
    4 Connection:Keep-Alive
    5 Host:localhost
    6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    7 Accept-Encoding:gzip,deflate
    8  
    9 username=jinqiao&password=1234

        

        HTTP 请求应答格式:

        当服务器收到浏览器的请求时,会向客户端返回数据,数据主要由三部分组成

        1. 协议状态 版绷带吗描述

        2. 响应头(ResponseHeader)

        3. 响应正文

        eg. 

        

    1 HTTP/1.1 200 OK
    2 Server:Apache Tomcat/5.0.12
    3 Date:Mon,6Oct2003 13:23:42 GMT
    4 Content-Length:112
    5 
    6 data(返回数据)

        

     2. ESP8266 编程

       下附esp8266模块发送请求的代码

     1 /*
     2  *  HTTP over TLS (HTTPS) example sketch
     3  *
     4  *  This example demonstrates how to use
     5  *  WiFiClientSecure class to access HTTPS API.
     6  *  We fetch and display the status of
     7  *  esp8266/Arduino project continous integration
     8  *  build.
     9  *
    10  *  Created by Ivan Grokhotkov, 2015.
    11  *  This example is in public domain.
    12  */
    13 
    14 #include <ESP8266WiFi.h>
    15 #include <WiFiClientSecure.h>
    16 
    17 const char* ssid = "zlei";
    18 const char* password = "18829237005";
    19 
    20 const char* host = "15r34407v7.imwork.net"; //需要访问的域名
    21 const int httpsPort = 37170;  // 需要访问的端口
    22 const String url = "/test";   // 需要访问的地址
    23 
    24 void setup() {
    25   Serial.begin(9600);
    26   Serial.println();
    27   Serial.print("connecting to ");
    28   Serial.println(ssid);
    29   WiFi.begin(ssid, password); // 连接WIFI
    30   while (WiFi.status() != WL_CONNECTED) {
    31     delay(500);
    32     Serial.print(".");
    33   }
    34   Serial.println("");
    35   Serial.println("WiFi connected");
    36   Serial.println("IP address: ");
    37   Serial.println(WiFi.localIP()); // 显示WIFI地址
    38 }
    39 
    40 void loop() {
    41   Serial.print("connecting to ");  
    42   Serial.println(host);  
    43 
    44   WiFiClient client;  
    45 
    46   /**
    47    * 测试是否正常连接
    48    */
    49   if (!client.connect(host, httpsPort)) {  
    50     Serial.println("connection failed");  
    51     return;  
    52   }  
    53   delay(10);  
    54   
    55   String postRequest =(String)("GET ") + url + "/ HTTP/1.1
    " +  
    56     "Content-Type: text/html;charset=utf-8
    " +  
    57     "Host: " + host + "
    " + 
    58     "User-Agent: BuildFailureDetectorESP8266
    " +
    59     "Connection: Keep Alive
    
    ";  
    60   Serial.println(postRequest);  
    61   client.print(postRequest);  // 发送HTTP请求
    62 
    63   /**
    64    * 展示返回的所有信息
    65    */
    66   String line = client.readStringUntil('
    ');
    67   while(line.length() != 0){
    68     Serial.println(line);
    69     line = client.readStringUntil('
    ');
    70   }
    71   Serial.println(line);
    72   client.stop();
    73   delay(3000); 
    74 }

      总结: 通过 WiFiClient 的 connect 方法来进行WIFI链接 通过print方法来发送HTTP请求, 以及readStringUntil(' ') 来读取服务器端返回的数据。

      其中测试结果如图所示:

      

      如有错误,欢迎指正。

        

  • 相关阅读:
    2019-10-28-开源项目
    2018-8-10-win10-uwp-MetroLog-入门
    2018-5-20-C#-BBcode-转-Markdown
    2018-8-10-win10-UWP-序列化
    2018-2-13-win10-uwp-BadgeLogo-颜色
    2019-1-25-WPF-ListBox-的选择
    2019-1-5-Windows-的-Pen-协议
    android studio打印
    Java 基本数据类型
    FreeRTOS 任务通知模拟计数型信号量
  • 原文地址:https://www.cnblogs.com/zleiblogs/p/7126106.html
Copyright © 2011-2022 走看看