婴儿级教学,手伤害教你用鸿蒙OS获取B站粉丝数!!
本文将讲解如何在Neptune开发板中发送GET请求去获取bilibili粉丝数,并通过CJSON解析回传的数据将获取到bilibili粉丝数输出至串口。
1、环境准备
1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:
Neptune开发板的环境搭建及使用
1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取
git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git
2、材料准备
1、Neptune HarmonyOS物联网 IOT模组
3、使用库介绍
由于W800上已经移植了lwip(一个小型开源的TCP/IP协议栈),所以在开发板上面进行网络编程相对来说还是比较方便,相关的API:
//device/winnermicro/neptune/sdk_liteos/src/network/lwip2.0.3/include
关于CJSON库使用openHarmony 提供的第三方CJSON库,位置在于://third_party/cJSON
如需使用需要将"//build/lite/config/component/cJSON:cjson_static",
添加到"//device/winnermicro/neptune/sdk_liteos/BUILD.gn"
中
4、编写代码
4.1、首先需要让开发板连接上网络,这里使用润和官方提供的wifi_connecter.h 中API连接网络:
WifiDeviceConfig config = {0};// 准备AP的配置参数strcpy(config.ssid, PARAM_HOTSPOT_SSID);strcpy(config.preSharedKey, PARAM_HOTSPOT_PSK);config.securityType = WIFI_SEC_TYPE_PSK;osDelay(10);//连接Wifiint netId = ConnectToHotspot(&config);
4.2、bilibili粉丝数的获取原理:
使用固定的链接加用户ID:
api.bilibili.com/x/relation/stat?vmid=+B站用户uid
例如新华社UID:473837611是,地址为:
api.bilibili.com/x/relation/stat?vmid=473837611
直接在浏览器里面输入就可以得到数据
{"code":0,"message":"0","ttl":1,"data":{"mid":473837611,"following":52,"whisper":0,"black":0,"follower":2971170}}
通过在线CJSON解析后为:
可以看到其follower(粉丝数)
值。
4.3、定义GET请求的header
//http组包宏,获取bilibili的http接口参数
#define WEB_SERVER "api.bilibili.com"
#define WEB_PORT "80"
#define WEB_URL "/x/relation/stat?vmid=用户UID"//http请求包
static const char *REQUEST = "GET "WEB_URL" HTTP/1.1\r\n""Host: "WEB_SERVER":"WEB_PORT"\r\n""Connection: close\r\n""\r\n";
4.4、创建一个Socket并连接以及写入请求
const struct addrinfo hints = {.ai_family = AF_INET,.ai_socktype = SOCK_STREAM,};struct addrinfo *res;struct in_addr *addr;int sockfd,response;char recv_buf[1024];char response_buf[1024];int index;while(1) {//DNS域名解析int err = getaddrinfo(WEB_SERVER,WEB_PORT,&hints,&res);if(err != 0 || res == NULL) {printf("DNS lookup failed err=%d res=%p\r\n", err, res);osDelay(50);continue;}//打印获取的IPaddr = &((struct sockaddr_in *)res->ai_addr)->sin_addr;//printf("DNS lookup succeeded. IP=%s\r\n", inet_ntoa(*addr));//新建socketsockfd = socket(res->ai_family, res->ai_socktype, 0);if(sockfd < 0) {printf("... Failed to allocate socket.\r\n");close(sockfd);freeaddrinfo(res);osDelay(50);continue;}//连接ipif(connect(sockfd, res->ai_addr, res->ai_addrlen) != 0) {//printf("... socket connect failed errno=%d\r\n", errno);perror("socket connect failed errno\r\n");close(sockfd);freeaddrinfo(res);osDelay(50);continue;}freeaddrinfo(res);//发送http包if (write(sockfd, REQUEST, strlen(REQUEST)) < 0) {printf("... socket send failed\r\n");close(sockfd);osDelay(50);continue;}
4.5、接受获取到的数据
do {memset(recv_buf,0,sizeof(recv_buf));response = read(sockfd, recv_buf, sizeof(recv_buf)-1);strcat(response_buf,recv_buf);} while(response > 0);
4.6、解析json数据,由于上述以讲述cjson数据的构成所以直接书写json数据函数,并将解析粉丝数打印:
void cjson_struct_info(char *text)
{cJSON *root,*data;cJSON *follower;//截取有效jsonchar *index=strchr(text,'{');strcpy(text,index);root = cJSON_Parse(text);if(root!=NULL){data = cJSON_GetObjectItem(root, "data");follower = cJSON_GetObjectItem(data,"follower");printf("follower:%d\r\n",follower->valueint);}cJSON_Delete(root);
}
4.7、编译、烧录,并测试最后的完成效果。
——————
原创:老王丨鸿蒙hms开发者高级认证持证人!学习更多鸿蒙OS相关开发技术可以关注我的公众号:鸿蒙开发者老王
婴儿级教学,手伤害教你用鸿蒙OS获取B站粉丝数!!相关推荐
- 教你如何使用hexo以及nginx、github搭建属于自己的博客(操心的妈妈级教学)
教你如何使用hexo以及nginx.github搭建属于自己的博客(妈妈级教学) ~~ 1.解释一下你要的服务器的效果以及对应的操作 ~~ 首先你要有自己的一台服务器,可以是云服务器,或者你可以用自己 ...
- 手把手教你使用Hugo搭建个人博客网站|保姆级教学
搭建个人博客网上目前用的比较多的博客框架是Hexo.Hugo.Jekyll.本文详细介绍利用最新的Hugo(基于Go语言的博客框架)在windows上搭建个人博客网站,从域名注册到后期维护,全程保姆级 ...
- 初级中学计算机知识,计算机基础知识(初级中学级教学方案课程教案).doc
计算机基础知识(初级中学级教学方案课程教案).doc ,.第一章 计算机基础教学目的让学生掌握计算机的基础内容,如特点:内.外部组成:系统组成等教学重点定义:内.外部组成:指法分工:产生和发展:趋势: ...
- 防范网络陷阱与计算机病毒教学设计,粤教版信息技术第二册上第6课防范网络陷阱与计算机病毒教学设计(1).doc...
粤教版信息技术第二册上第6课防范网络陷阱与计算机病毒教学设计(1).doc 文档编号:238804 文档页数:3 上传时间: 2018-06-06 文档级别:普通资源 文档类型:doc 文档大小:11 ...
- 计算机的操作系统教学设计,川教版信息技术七上第9课《计算机操作系统》教学设计1.doc...
川教版信息技术七上第9课<计算机操作系统>教学设计1.doc 文档编号:702830 文档页数:4 上传时间: 2019-07-30 文档级别: 文档类型:doc 文档大小:115.00K ...
- 保姆级教程:手把手教你搭建个人网站
保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...
- Java EE系列(九)——Java EE连接Mysql数据库(JDBC保姆级教学)
最近几天,peter xiao所在的项目小组也逐渐开始进行做最后的Java web课程大作业了,我们组所做的是运动会报名服务系统,其中涉及到很多数据的增删查改,所以需要依靠Mysql数据库来解决这些问 ...
- 手牵手教你写代码,从入门到精通
如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式和缩进.使用清晰的变量名和方法名.在必要时提供文档与注释.不要过度精简代码等等. 但是对于什么是烂代码,你有比较清晰的认识吗? 在 G ...
- 「保姆级教学」入门级java程序——薪资转换器
往期「保姆级教学」目录 「保姆级教学」iOS下JDK环境配置 文章目录 往期「保姆级教学」目录 前言 第二日任务 1.java基础语法 2.掌握java基本输入输出 3.掌握java基本数据类型和变量 ...
- Fortran保姆级教学——考试所有知识点看这一篇就够了
Fortran保姆级教学--考试所有知识点看这一篇就够了 临近期末本人复习的同时将整个fortran课堂知识整理了下来,希望学弟学妹们今后学这门课的时候不至于在csdn找不到系统的教程,也希望能帮到需 ...
最新文章
- 成功解决 threading Exception unhandled RuntimeError
- 正则表达式 特殊符号系列 通配符系列
- GitHub笔记(二)——远程仓库的操作
- java 中允许键重复的,二叉搜索树的定义是否允许重复键?
- Java实例化对象过程中的内存分配
- 转盘脚本编辑器学习1
- 齐浩亮 计算机科学与技术,齐浩亮
- HDU 6129 Just do it 组合数学 杨辉三角 递推
- HTML5安全风险详析之三:WebSQL攻击
- docker 下使用 Hyperf(win10)
- 数字电路实验怎么接线视频讲解_铆钉是怎么被铆接的,多种铆钉动画演示(内附视频讲解)...
- python真好玩 pdf 下载_Python真好玩:教孩子学编程_PDF电子书
- 知乎日报富文本处理android,一个追求高效的学习者手机里装有哪些APP?
- GooglTest GoogleMock 实践感想三 死亡测试初步(1)
- 漏洞库:爬取NVD-美国国家信息安全漏洞库
- JavaSocket编程之Netty框架线程模型
- winform textbox行间距调整
- 【路径规划】基于matlab卡尔曼滤波、三次插值极速赛道赛车路径规划【含Matlab源码 2158期】
- 机器学习-RNN机器翻译
- 生物安全实验室P1、P2、P3、P4等级的区别
热门文章
- 3D数学基础:向量运算
- 超级简单好用的免费CRM客户管理软件,推荐!
- Word中使用表格排版公式时,表格内序号纵向居中的问题。
- 事物运动的状态和方式是谁提出的_为什么信息是事物运动的状态和方式??
- qt creator报错 error: C1083: 无法打开包括文件:“QMediaPlayer”
- GIS等级考试知识集锦
- AI在医疗领域的应用 | “AI+传统行业”全盘点
- LimeSDR系列产品介绍(一):板卡级(Board Level)产品
- 跳一跳python源码_跳一跳源码(python 实现 跳一跳游戏 代码解析)
- Scratch编程——跳一跳