1. 背景
目前在鸿蒙中的网络请求大致有三种
@ohos.net.http:对应的三方库有axios
@ohos.net.socket:对应的三方库有【httpclient】
1.1 抓包前的前置条件,需要安装Charles证书到真机上
具体步骤可参考这篇文章 juejin.cn/post/737883…
2. 问题
目前在API12 中我个人尝试使用@ohos.net.http 和@ohos.net.socket 均无法使用Charles抓包https请求。个人推测是没有对应的API来忽略Charles的用户证书【有哪位大佬解决了可以评论区评论下】
通过和一些业内大佬交流,小道消息得知,鸿蒙未来主流的网络框架是@kit.RemoteCommunicationKit ,@ohos.net.http 和@ohos.net.socket仅做功能维护
于是开始尝试阅读@kit.RemoteCommunicationKit 的开发文档,发现有一个remoteValidation 的属性,该属性的类型有【'system' | 'skip' | CertificateAuthority | ValidationCallback】。看到skip。感觉有戏
3. 解决方案
核心代码就是,对应的文档:developer.huawei.com/consumer/cn…
request.configuration = {
security: {
remoteValidation: 'skip',
},
};
import { rcp } from "@kit.RemoteCommunicationKit";
import { BusinessError } from '@kit.BasicServicesKit';
const session = rcp.createSession();
const request = new rcp.Request('https://wanandroid.com/harmony/index/json','GET');
request.configuration = {
security: {
remoteValidation: 'skip',
},
};
session.fetch(request).then((rep: rcp.Response) => {
console.info(`Response succeeded: ${rep}`);
}).catch((err: BusinessError) => {
console.error(`Response err: Code is ${err.code}, message is ${err.message}`);
});
本文正在参加华为鸿蒙有奖征文征文活动