【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\r\n" + 56 "Content-Type: text/html;charset=utf-8\r\n" + 57 "Host: " + host + "\r\n" + 58 "User-Agent: BuildFailureDetectorESP8266\r\n" + 59 "Connection: Keep Alive\r\n\r\n"; 60 Serial.println(postRequest); 61 client.print(postRequest); // 发送HTTP请求 62 63 /** 64 * 展示返回的所有信息 65 */ 66 String line = client.readStringUntil('\n'); 67 while(line.length() != 0){ 68 Serial.println(line); 69 line = client.readStringUntil('\n'); 70 } 71 Serial.println(line); 72 client.stop(); 73 delay(3000); 74 }
总结: 通过 WiFiClient 的 connect 方法来进行WIFI链接 通过print方法来发送HTTP请求, 以及readStringUntil('\n') 来读取服务器端返回的数据。
其中测试结果如图所示:
、
如有错误,欢迎指正。
转载于:https://www.cnblogs.com/zleiblogs/p/7126106.html
【ESP8266】发送HTTP请求相关推荐
- 【ESP8266】NONOS SDK开发,发送HTTP请求
网络方面不是很懂,可能描述有一点不准确. 主要是通过ESP8266,在NONOS-SDK环境下,用URL地址,发出HTTP请求,接收并处理信息. 假设已经大致了解厂家提供的SDK,以及Eclipse开 ...
- ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?
我想创建ajax调用并发送数据与文件和其他变量,我也使用django,如果它的帮助.如何发送ajax请求文件与其他字符串的变量? 我尝试: js文件: $("#save-new-reques ...
- jquery发送put请求_浅谈GET,POST,PUT发送请求
一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求 当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restfu ...
- 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)
1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...
- Vue之axios发送Ajax请求
2.10 axios发送ajax请求 axios github 2.10.1 准备工程 创建一个django工程,例如 login.创建完成之后,再创建一个子应用,例如users.最后再设置一下模板文 ...
- 爬虫之requests模块发送post请求
爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...
- java post xmll_HttpClient发送Post请求,内容格式为xml,并获取响应内容
ChannelDistributor.xml 内容如下: yisou abcd1234 10010000 00 1).HttpClient发送Post请求,内容格式为xml,并获取响应内容 impor ...
- PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例
header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...
- python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST
目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...
最新文章
- visual studio可以开发app吗_个人能开发App软件吗?从想法到App开发完成,我只用了三天...
- DataGridView控件 1129
- web.config中配置数据库连接的两种方式
- Linux项目日报,1Password推出Linux版本 现已进入公开预览阶段
- 手机为什么取消了内存卡?
- pcb文件转成原理图_初学PCB设计,到底该学习哪款软件?
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-3.微信网站扫码支付介绍...
- jeesite实战(三十六)——非status的其他属性In条件查询
- java 毫秒转分钟和秒_将毫秒转换为分钟和秒的java程序
- Word打开和关闭速度均很慢的解决方法
- 招聘简历管理系统的简单设计
- PSD的网页模版PS切图到网页生成全攻略
- 全球与中国湿疹护理产品市场现状及未来发展趋势(2022)
- python2048游戏撤销上一部功能怎么实现_python 实现 2048 游戏 (一)
- 电压和电流反馈判别及例子,绝对让你通透,其实也没有那么难,一次就看懂!从此终于搞懂了电压反馈和电流反馈!
- 算法设计与分析(十四)
- 高级Spring之Scope 详解
- 数学基础(1)~ 概率论基础知识
- oppo A57(全网通)一键救砖,轻松刷回官方系统。
- UCI数据集数据的分析 ——葡萄酒数据
热门文章
- java文件下载代码_Java代码实现文件下载
- Jupyter运行GitHub里的MXNet源代码
- php执行出现500,为什么我的PHP总是出现500错误?
- 去掉WINDOWS SERVER 开机按CTRL+ALT+DEL登陆的方法
- 本博客停止更新,后续用博客园。
- 北京东二环——东四联通机房
- Objective-C SQLiteHelper
- 共享单车或开启了物联网的大门,新的变革即将开启
- Vue 基础的开发环境
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)...