ESP32-RTOS 获取HTTP页面数据-LESSON3-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6116|回复: 0

ESP32-RTOS 获取HTTP页面数据-LESSON3

[复制链接]
发表于 2017-4-28 22:09 | 显示全部楼层 |阅读模式
本帖最后由 vincen20 于 2017-4-28 22:22 编辑

ESP32 RTOS 获取HTTP页面数据
以解决获取天气预报数据为列
HTTP协议大家并不陌生,已近成为我们浏览网页不可缺少的协议。
一般大家采用的获取天气预报信息都是通过专门的API来取得天气预报数据,随着发展越来越多的天气预报API开始收费,对于一般的个人电子爱好者来说带来了不少的麻烦。为解决这一问题,特提出通过http方式来获取天气预报数据的方法。
提出整个过程的原理以及流程
寻址适合抓取的网址、分析要获取的http页面数据找出要获取数据的特征,针对特征编写获取字符串处理函数。
一、找网址。天气预报信息的获取数据比较好找,大部分的网址都提供天气预报服务,很容易就能找到包含有天气预报数据的页面。为了节省流量,发现手机页面的比较简单,特别是为以前手机设计的版本。
二、分析页面数据找出特征。页面的数据一般为html格式文档,页面内容如图
需要获取类似
var dataSK= {"nameen":"fushun","cityname":"富顺"city":"101270302","temp":"23","tempf":"73","WD":"东南风","wde":"SE"….. ,
在此需要获取到的数据为23度。根据分析,在整个html页面中,只有唯一出现个的字符串“dataSK”,因此该处就是需要开始获取的数据。因此可以使用C语言字符串处理函数strstr获取到“days7”后部分长度的字符串。在根据数据23度。在字符temp”:”  ,” tempf 中,所以通过2次使用strstr函数就能等到最短的包含温度的字符串信息。
第一次使用strstr函数,查找的字符串为dataSK,结果是dataSK ={"nameen":"fushun","cityname":"富顺"city":"101270302","temp":"23","tempf":"73","WD":"东南风","wde":"SE"….. ,
第二次使用strstr函数,查找的字符串为temp":",结果是temp":"23","tempf":"73","WD":"东南风","wde":"SE"….. ,
第三次使用strstr函数,查找的字符串为","tempf,结果是","tempf":"73","WD":"东南风","wde":"SE"….. ,
通过第二次与第三次的数据,可以计算出我们获取字符串的长度,在由第二次得到的数据可以提出出最终结果‘23’这个温度数据。
可参考下面程序  
char*splitx(char *str,char *s,char *e){
char *t1=NULL;
char *t2=NULL;
char *t3=NULL;
uint8_t lensx=0;
t1=strstr(str,s);
if(t1==NULL){
ESP_LOGI("FUNC_splitx","t1valave is NULL");
return ESP_OK;
}
t2=strstr(t1,e);
if(t2==NULL){
ESP_LOGI("FUNC_splitx","t2valave is NULL");
return ESP_OK;
}
lensx=strlen(t1)-strlen(t2)-strlen(s);
chart='\0';
t3=(char *)malloc(sizeof(char)*lensx+1);
memset(t3,t,sizeof(char)*lensx+1);
strncpy(t3,t1+sizeof(char)*strlen(s),lensx);
return t3;
}
写入代码,然后 make  app flash
r2.png
re1.png
三、通过HTTP方式获取数据的优势。
应用广,通过HTTP获取数据的方式不仅可以用来获取天气预报数据,还可以获取新闻数据,与网络服务器进行数据交换。
示例代码github,根据esp32http_request代码而成。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 08:05 , Processed in 0.080506 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表