久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>母嬰>嗶哩嗶哩支持鴻蒙系統嗎(手把手教你用鴻蒙OS獲取B站粉絲數)

嗶哩嗶哩支持鴻蒙系統嗎(手把手教你用鴻蒙OS獲取B站粉絲數)

發布時間:2024-01-25閱讀(15)

導讀講解如何在Neptune開發板中發送GET請求去獲取bilibili粉絲數,并通過CJSON解析回傳的數據將獲取到bilibili粉絲數輸出至串口。1、環境....

講解如何在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

如需使用需要將"http://build/lite/config/component/cJSON:cjson_static", 添加到"http://device/winnermicro/neptune/sdk_liteos/BUILD.gn"中

嗶哩嗶哩支持鴻蒙系統嗎(手把手教你用鴻蒙OS獲取B站粉絲數)(1)

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); //連接Wifi int 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解析后為:

嗶哩嗶哩支持鴻蒙系統嗎(手把手教你用鴻蒙OS獲取B站粉絲數)(2)

可以看到其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://http請求包static const char *REQUEST = "GET "WEB_URL" HTTP/1.1 " "Host: "WEB_SERVER":"WEB_PORT" " "Connection: close " " ";

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 ", err, res); osDelay(50); continue; } //打印獲取的IP addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; //printf("DNS lookup succeeded. IP=%s ", inet_ntoa(*addr)); //新建socket sockfd = socket(res->ai_family, res->ai_socktype, 0); if(sockfd < 0) { printf("... Failed to allocate socket. "); close(sockfd); freeaddrinfo(res); osDelay(50); continue; } //連接ip if(connect(sockfd, res->ai_addr, res->ai_addrlen) != 0) { //printf("... socket connect failed errno=%d ", errno); perror("socket connect failed errno "); close(sockfd); freeaddrinfo(res); osDelay(50); continue; } freeaddrinfo(res); //發送http包 if (write(sockfd, REQUEST, strlen(REQUEST)) < 0) { printf("... socket send failed "); 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; //截取有效json char *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 ",follower->valueint); } cJSON_Delete(root);}

4.7、編譯、燒錄,并測試最后的完成效果。

嗶哩嗶哩支持鴻蒙系統嗎(手把手教你用鴻蒙OS獲取B站粉絲數)(3)

——————

原創:老王丨鴻蒙hms開發者高級認證持證人!學習更多鴻蒙OS相關開發技術可以關注我的公眾號:鴻蒙開發者老王

歡迎分享轉載→http://www.avcorse.com/read-312320.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖