热门标签 | 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代码而成。



推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
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社区 版权所有