前言git
本节,咱们开始学习wemos D1的HTTP Client编程,并实现经过HTTP GET方式获取天气信息的功能。github
1、基础知识编程
1.HTTP简介json
1.1 HTTP概要api
HTTP是Hypertext Transfer Protocol的缩写,Hypertext(超文本)是能够根据客户端请求而跳转的结构化信息。HTTP协议的请求及相应方式设计以下图所示:浏览器
从图中能够看出,服务器端响应客户端请求后马上断开链接,链接不会维持好久,即便同一个客户端再次发送请求,服务端也没法辨认出是不是原先的那个客户端发出的请求,会以相同的方式处理新的请求。服务器
1.2 HTTP请求ide
HTTP请求是客户端向服务端发送请求消息,请求消息能够分为请求行、消息头、消息体三个部分;请求行含有请求方式信息(GET/POST等),GET用于请求数据,POST主要用于传输数据;消息头包括一些访问的域名、用户代理、Cookie等信息;消息体就是请求的数据,仅在POST方式请求时候输入。函数
1.3 HTTP响应工具
HTTP响应是指服务端根据客户端发送的请求中的动做要求作出具体的动做,而后将结果返回给客户端。 HTTP响应消息能够分为状态行、头信息、消息体三个部分;状态行含有请求的状态信息,这是其与请求消息相比最大的区别。
2.ESP8266HTTPClient函数说明
在Wemos D1实际开发中,直接使用ESP8266HTTPClient库提供的函数便可。
http常见响应处理函数以下:
2、实例运行
1.Http GET方式获取上海天气
1.1 简介
获取天气接口使用sojson提供的免费接口:http://t.weather.sojson.com/api/weather/city/city_code,本文访问上海天气,须要填写上海city_code,为101021300,不一样城市码能够百度搜索获取。
首先咱们在浏览器直接输入http://t.weather.sojson.com/api/weather/city/101021300 ,效果以下:
1.2 wemos D1程序
接着咱们开始使用wemos D1来获取天气,代码以下:
#include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> char* ssid = "sand"; char* passwd = "12345678"; const uint16_t port = 80; const char * host = "http://t.weather.sojson.com/api/weather/city/101021300"; HTTPClient http; void setup() { //在这里加入初始化相关代码,只运行一次: Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, passwd); Serial.println("connecting to router... "); //等待wifi链接成功 while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.print("WiFi connected, local IP address:"); Serial.println(WiFi.localIP()); Serial.print("[HTTP] begin...\n"); http.begin(host); //HTTP delay(500); } void loop() { if (WiFi.status() == WL_CONNECTED) { // start connection and send HTTP header int httpCode = http.GET(); if(httpCode) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET... code: %d\n", httpCode); // file found at server if(httpCode == 200) { String payload = http.getString(); Serial.println(payload); } } else { Serial.print("[HTTP] GET... failed, no connection or no HTTP server\n"); } } delay(5000); }
1.3 运行
代码编译后上传到wemos D1,arduino自带串口工具显示以下:
从上图可知,wemos D1已经完成了发送HTTP请求获取天气状况,可是显示数据存在部分乱码,这个是因为编码致使,接下来咱们使用secureCRT串口工具,并设置显示编码方式为UTF-8。
打开串口,显示以下:
修改编码方式后,显示正常,至此咱们实现了经过wemos D1发送HTTP GET获取天气信息。
3、结语
如您在使用过程当中有任何问题,请加QQ群进一步交流,也能够github提Issue。
QQ交流群:906015840 (备注:物联网项目交流)
获取源码:关注公众号,回复wemos便可
一叶孤沙出品:一沙一世界,一叶一菩提