热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

esp32查询剩余内存_ESP32RTOS获取HTTP页面数据LESSON3

本帖最后由vincen20于2017-4-2822:22编辑ESP32RTOS获取HTTP页面数据以解决获取天气预报数据为列HTTP协议大家并不陌生,已近成为我们浏览

本帖最后由 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 (340.79 KB, 下载次数: 35)

2017-4-28 22:07 上传

re1.png (71.22 KB, 下载次数: 35)

2017-4-28 22:07 上传

三、通过HTTP方式获取数据的优势。

应用广,通过HTTP获取数据的方式不仅可以用来获取天气预报数据,还可以获取新闻数据,与网络服务器进行数据交换。

示例代码github,根据esp32的http_request代码而成。



推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 马拦过河卒pascal(题目,分析,样例输入输出,源程序,感受)马拦过河卒源程序名knight.???(pas,c,cpp)可执行文件名knight.exe输入文件名knight. ... [详细]
  • C语言学习笔记—链表(二)链表的静态添加及动态遍历
    链表的静态添加及动态遍历我们知道数组中的数据存储是有序的,而链表中的数据是无序的但是存在某种联系使之组成链表。那么我们如果向一组数据中添加一个数据元素, ... [详细]
author-avatar
小甜甜龌龊的华丽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有