【OpenHarmony】 鸿蒙网络请求库之Mars

153 阅读3分钟

项目简介

Mars 是一个跨平台的网络组件,包括主要用于网络请求中的长连接,短连接,是基于 socket 层的解决方案,在网络调优方面有更好的可控性,暂不支持HTTP协议。 Mars 极大的方便了开发者的开发效率。

效果演示

编译运行

要编译通过mars需要在mars\library\src\main\cpp添加openssl依赖,需要自行编译openssl集成到应用hap

1.修改编译之前需要在交叉编译中支持编译x86_64架构,可以参考adpater_architecture.md文档。

2.编译之前需要先修改HPKBUILD文件中openssl的版本

pkgver=OpenSSL_1_1_1t 
//修改为
pkgver=OpenSSL_1_1_1w

3.下载openssl的OpenSSL_1_1_1w版本,执行以下命令获取对应的sha512值,替换SHA512SUM文件的内容。

sha512num openssl-OpenSSL_1_1_1w.tar.gz

4.在cpp目录下添加编译生成的openssl文件夹(会在lycium目录下生成usr文件夹里面会生成openssl文件夹)。

windows和mac请先合入patch,然后再编译此项目,参考以下两步:

  1. 下载源码
git clone https://gitee.com/openharmony-sig/mars.git --recurse-submodules

2. 合入patch,顺序执行下面的命令即可自动合入patch。

chmod +x automatically_apply_mars_patch_files.sh

./automatically_apply_mars_patch_files.sh

至此patch合入完成。

下载安装

ohpm install @ohos/mars 

使用说明:

第一步: 初始化,导入 Mars 组件到自己项目中;

...
import { Mars, StnLogic, Xlog, BuildConfig } from '@ohos/Mars/';
import MarsServiceNative from '../wrapper/service/MarsServiceNative';
import MarsServiceProfile from '../wrapper/service/MarsServiceProfile';
import marsnapi from 'libmarsnapi.so';
...

第二步:方法调用,通过marsnapi调用对应方法;

marsnapi.BaseEvent_onCreate();
}

DD一下:欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。

`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

接口说明

  • StnLogic.setLonglinkSvrAddr - 设置长链接的DEBUG IP
  • StnLogic.StnLogic_setShortlinkSvrAddr - 设置短链接的DEBUG IP
  • StnLogic.setDebugIP - 设置的DEBUG IP(不区分长/短链接)
  • StnLogic.startTask - 任务启动
  • StnLogic.stopTask - 任务停止
  • StnLogic.hasTask - 判断任务是否存在
  • StnLogic.redoTask - 重做所有长短连任务. 注意这个接口会重连长链接.
  • StnLogic.clearTask - 停止并清除所有未完成任务.
  • StnLogic.reset - 停止并清除所有未完成任务并重新初始化
  • StnLogic.resetAndInitEncoderVersion - 停止并清除所有未完成任务并重新初始化, 重新设置encoder version
  • StnLogic.setBackupIPs - 设置备份IP,用于long/short svr均不可用的场景下
  • StnLogic.makesureLongLinkConnected - 检测长链接状态.如果没有连接上,则会尝试重连.
  • StnLogic.setSignallingStrategy - 信令保活
  • StnLogic.keepSignalling - 发送一个信令保活包
  • StnLogic.stopSignalling - 停止信令保活
  • StnLogic.setClientVersion - 设置客户端版本 放入长连私有协议头部
  • StnLogic.getLoadLibraries - 获取底层已加载模块
  • StnLogic.req2Buf - 网络层获取上层发送的数据内容
  • StnLogic.buf2Resp - 网络层将收到的信令回包交给上层解析
  • StnLogic.trafficData - 上报信令消耗的流量
  • SdtLogic.setCallBack - 设置信令探测回调实例,探测结果将通过该实例通知上层
  • SdtLogic.setHttpNetcheckCGI - 设置一个Http连通状态探测的URI
  • Xlog.logWrite - 日志写入方式1
  • Xlog.logWrite2 - 日志写入方式2
  • Xlog.native_logWrite2 - 自定义日志写入
  • Xlog.setLogLevel - 设置日志等级
  • Xlog.getLogLevel - 获取日志等级
  • Xlog.newXlogInstance - 创建xlog的日志单例
  • Xlog.releaseXlogInstance - 释放xlog的日志单例

约束与限制

在下述版本验证通过:

  • DevEco Studio 版本:4.1Canary(4.1.3.414) , OpenHarmony SDK:API 11 (4.1.0.55)
  • DevEco Studio 版本:DevEco Studio NEXT Developer Preview2 : 4.1.3.600 , OpenHarmony SDK: API11 (4.1.0)

目录结构

|---- library  
|     |---- cpp  # 示例代码文件夹
|           |---- mars # C++库文件
|     |---- ets
|           |---- sdt  
|                 |---- SdtLogic # sdt对外封装接口
|           |---- stn  
|                 |---- StnLogic # stn对外封装接口
|           |---- xlog # xlog对外封装接口
|                 |---- Xlog # xlog对外封装接口
|---- README.md  # 安装使用方法
|---- README_zh.md  # 安装使用方法