鸿蒙开发(NEXT/API 12)【拦截器 (C/C++)】远场通信场景

news/2024/10/17 16:07:19/

场景介绍

请求拦截器。可用于拦截请求,修改Rcp_Request请求相关内容,或者检查本地缓存直接返回响应等等。

开发步骤

  1. CPP侧导入模块。
#include "RemoteCommunicationKit/rcp.h"
#include <cstdlib>
#include <stdio.h>
#include <unistd.h>
  1. CMakeLists.txt中添加以下lib。

    librcp_c.so
    
  2. 定义自己的拦截器。

uint32_t RcpTestFirstIntercept(Rcp_Request *request, const Rcp_RequestHandler *next,const Rcp_ResponseCallbackObject *responseCallback) {printf("%s\n", request->url);return HMS_Rcp_CallNextRequestHandler(request, next, responseCallback);
}
uint32_t RcpTestSecondIntercept(Rcp_Request *request, const Rcp_RequestHandler *next,const Rcp_ResponseCallbackObject *responseCallback) {printf("%s\n", request->url);return HMS_Rcp_CallNextRequestHandler(request, next, responseCallback);
}
  1. 发起请求,触发拦截器,执行拦截器内相关操作(用户可自定义拦截器)。“http://www.example.com”请根据实际情况替换为想要请求的URL地址。等待响应返回后,销毁request并关闭session。
const int DEFAULT_INTERCEPTOR_ARRAY_SIZE = 2;void RcpCreateInterceptors(Rcp_InterceptorArray *interceptorsArray) {interceptorsArray->interceptors =(Rcp_Interceptor *)calloc(1, DEFAULT_INTERCEPTOR_ARRAY_SIZE * sizeof(Rcp_Interceptor));interceptorsArray->size = DEFAULT_INTERCEPTOR_ARRAY_SIZE;interceptorsArray->interceptors[0].intercept = RcpTestFirstIntercept;interceptorsArray->interceptors[1].intercept = RcpTestSecondIntercept;
}void ResponseCallback(void *usrCtx, Rcp_Response *response, uint32_t errCode) {(void *)usrCtx;if (response != NULL) {printf("Response status: %d\n", response->statusCode);} else {printf("Fetch failed: errCode: %u\n", errCode);}if (response != NULL) {response->destroyResponse(response);}
}
bool g_callback = false;int main() {const char *kHttpServerAddress = "http://www.example.com";Rcp_SessionConfiguration sessionConfig{};RcpCreateInterceptors(&sessionConfig.interceptors);Rcp_Request *request = HMS_Rcp_CreateRequest(kHttpServerAddress);request->method = RCP_METHOD_GET;uint32_t errCode = 0;// 创建sessionRcp_Session *session = HMS_Rcp_CreateSession(&sessionConfig, &errCode);// 配置请求回调Rcp_ResponseCallbackObject responseCallback = {ResponseCallback, NULL};// 发起fetch请求errCode = HMS_Rcp_Fetch(session, request, &responseCallback);// 等待fetch结果int timeout = 100;while (timeout-- > 0 && !g_callback) {usleep(1000);}// 在退出前取消可能还在执行的requests errCode = HMS_Rcp_CancelSession(session);// 清理requestHMS_Rcp_DestroyRequest(request);// 关闭sessionerrCode = HMS_Rcp_CloseSession(&session);// 处理errCode// 清理拦截器free(sessionConfig.syncInterceptors.interceptors);return 0;
}

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 鸿蒙 (OpenHarmony)开发学习视频》
  • 鸿蒙生态应用开发V2.0白皮书》
  • 鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 鸿蒙开发基础》
  • 鸿蒙开发进阶》
  • 鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1


http://www.ppmy.cn/news/1539743.html

相关文章

查看 Git 的配置信息

查看 Git 的配置信息 1. 查看所有配置项 git config --list这个命令会显示所有级别&#xff08;系统级、全局级和本地级&#xff09;的 Git 配置项。 2. 查看全局配置 git config --global --list仅显示全局范围内的配置项&#xff0c;这些配置通常存储在 ~/.gitconfig 或 …

python+Mosh网课笔记01

太久没写python代码了&#xff0c;学机器学习重新拾起python&#xff0c;笔记比较简陋。 参考&#xff1a;mosh的python教程 一、入门 用vscode编写代码。下载了autopep8插件用于代码格式化。下载了pylint插件用于代码报错提示。 二、基本类型 int&#xff0c;bool&#x…

「爱码士找Bug」第七弹

用Python实现一条SQL语句中只有前两个字段是变化的&#xff0c;而其他字段都是固定值。代码如下&#xff1a; # 假设固定值字段 fixed_columns ["column3", "column4"] # 假设有更多固定列 fixed_values ["fixed_value3", "fixed_value…

【openwrt-21.02】T750 openwrt 概率出现nat46_ipv4_input+0x90/0x4b4问题分析及解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

项目中将vue的项目打包成非module的script

背景&#xff1a;由于宿主环境是比较低版本的火狐浏览器&#xff0c;需要兼容。。 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><link rel"icon" type"image/svgxml&…

你存在,在我们的攻击画像里

从挨批到挨夸&#xff0c;我只用了一个动作 嗨&#xff0c;还是我&#xff0c;顺丰的安全研究员K&#xff0c;今天又在网络安全的海洋里“冲浪”&#xff0c;结果被三条告警的“浪”拍得晕头转向&#xff1a;这三条告警彼此简直毫不相干&#xff0c;可是看着间隔时间&#xff…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法&#xff0c;适用于需要动态响应外部或内部信号的场景。通过事件结构&#xff08;Event Structure&#xff09;和用户自定义事件&#xff08;User Events&#xff09;&#xff0c;开发者可以设计出高效的事件驱动程序&am…

easyocr 本地部署模型 识别图像 ocr - python 实现

使用 easyocr 本地部署识别图像 ocr ,可以满足简单图像场景的ocr识别。 可以进行 中文、英文 ocr 识别。 安装 python 库 pip install easyocr 识别本地模型下载地址&#xff1a;easyocr本地部署模型识别图像ocr-python实现资源-CSDN文库 也可通过程序直接下载官方链接 识…