首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
HarmonyOS
发新帖
0
0
[原创]【FAQ】HarmonyOS SDK 闭源开放能力 — Network Kit
发表于: 2025-11-11 16:12
3571
[原创]【FAQ】HarmonyOS SDK 闭源开放能力 — Network Kit
HarmonyOS SDK
2025-11-11 16:12
3571
**1.问题描述:** 在系统网络代理在被清除后,鸿蒙web组件尝试打开网页时,获取到了系统网络代理,导致网页打开失败。 **解决方案:** 1. 检查网络权限配置 确保在 module.json5 配置文件中已声明必要的网络权限: ``` "requestPermissions": [ { "name": "ohos.permission.INTERNET" }, { "name": "ohos.permission.GET_NETWORK_INFO" } ] ``` 缺少权限可能导致网络请求被系统拦截。 2. 调整Web组件属性 在Web组件中添加以下关键属性以增强网络访问能力: ``` Web({ src: 'https://example.com' }) .domStorageAccess(true) // 启用DOM存储 .fileAccess(true) // 允许文件访问 .javaScriptAccess(true) // 启用JavaScript ``` 部分网页功能(如WebSocket)需要开启特定权限。 3. 处理代理残留问题 清除缓存:手动清除应用缓存或重启应用,避免代理配置残留。 设置自定义UserAgent:部分网络问题可通过覆盖默认UserAgent解决: ``` Web({ src: 'https://example.com' }) .userAgent('Mozilla/5.0 HarmonyOS-WebView') ``` 4. 服务端兼容性验证 若涉及跨域请求(如开发环境调用远程API),需服务端配置CORS响应头(如 Access-Control-Allow-Origin: *)。 通过Postman等工具直接测试接口,排除服务端问题。 5. SDK版本与网络配置 确保使用最新版SDK,旧版本可能存在网络组件兼容性问题。 检查系统全局代理设置是否完全关闭(路径:系统设置 > 网络和互联网 > 代理)。 若问题仅在Web组件中复现,而系统浏览器正常,需重点排查组件属性配置及权限声明。开发过程中可通过DevTools日志(FocusedHitDataChange 类错误)定位具体失败环节。 **2.问题描述:** 目前有的流量管理模块<mark class="encrypted">f33K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1k6%4g2A6k6r3g2K6i4K6u0r3L8X3g2@1i4K6u0V1M7%4c8S2N6r3W2K6N6r3W2U0M7#2!0q4z5g2)9^5y4#2)9^5b7#2!0q4z5g2)9&6c8q4!0m8x3W2!0q4y4#2)9&6b7g2)9^5y4r3q4H3K9g2!0q4c8W2!0n7b7#2)9^5b7#2!0q4z5q4!0m8y4W2)9^5x3g2!0q4y4q4!0n7z5g2)9^5z5q4!0q4y4W2)9&6z5q4!0m8c8W2!0q4y4#2!0n7b7W2)9&6c8W2!0q4z5q4!0m8c8g2!0m8x3g2!0q4y4W2)9&6y4g2!0n7y4q4!0q4y4q4!0n7z5q4!0m8b7g2!0q4z5q4!0m8c8g2!0n7c8g2!0q4y4g2!0m8y4q4)9^5y4#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4c8W2!0n7b7#2)9^5b7#2!0q4z5q4!0m8y4W2)9^5x3g2!0q4y4q4!0n7z5g2)9^5z5q4!0q4y4W2)9&6z5q4!0m8c8W2!0q4y4#2!0n7b7W2)9&6c8W2!0q4z5q4!0m8c8g2!0m8x3g2!0q4y4W2)9&6c8W2)9&6x3q4!0q4y4q4!0n7z5q4!0m8b7g2!0q4y4g2!0n7b7g2)9&6y4q4!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4W2)9^5x3q4!0n7b7W2!0q4y4#2)9&6b7g2)9^5y4q4!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4W2)9&6b7#2)9^5z5g2!0q4y4q4!0n7b7W2)9^5x3q4!0q4y4q4!0n7z5g2)9^5z5q4!0q4y4g2)9^5b7g2)9&6c8g2!0q4y4W2!0n7x3#2)9&6y4g2!0q4y4g2)9^5z5q4)9^5y4W2!0q4y4g2!0n7b7#2)9^5x3q4!0q4y4#2!0n7b7W2)9&6c8W2!0q4z5q4!0m8c8g2!0m8x3g2!0q4y4W2)9&6c8W2)9&6x3q4!0q4y4q4!0n7z5q4)9^5x3q4!0q4y4q4!0n7z5q4!0m8b7g2!0q4y4g2!0n7b7g2)9&6y4q4!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4#2)9&6b7g2)9^5y4q4!0q4z5q4)9&6b7#2)9^5x3W2!0q4y4#2!0m8b7g2)9&6c8q4!0q4y4g2)9&6x3W2)9^5b7#2N6A6i4K6u0V1c8X3W2Q4c8e0g2Q4z5e0m8Q4z5e0N6Q4c8f1k6Q4b7V1y4Q4z5f1j5`.</mark> **解决方案:** 【解决方案】 固定时间分别获取网卡和蜂窝实时上行和下行流量,两个数值的差额即为每天设备的流量统计。 部分代码示例: ``` TypeScript import { statistics, socket } from '@kit.NetworkKit'; import { BusinessError } from '@kit.BasicServicesKit'; @Entry @Component struct Index { @State message: string = 'Statistics'; getIfaceBytes() { // 获取指定网卡实时下行流量 statistics.getIfaceRxBytes("wlan0").then((stats: number) => { console.log(`wlan0 down size = ${stats}`); }); // 获取指定网卡实时上行流量 statistics.getIfaceTxBytes("wlan0").then((stats: number) => { console.log(`wlan0 up size = ${stats}`); }); } getCellularBytes() { // 获取蜂窝实时下行流量 statistics.getCellularRxBytes((error: BusinessError, stats: number) => { if (error) { console.error(`getCellularRxBytes err, code: ${error.code}, message: ${error.message}`); return; } console.log(`cellular down size = ${stats}`); }); // 获取蜂窝实时上行流量 statistics.getCellularTxBytes((error: BusinessError, stats: number) => { if (error) { console.error(`getCellularTxBytes err, code: ${error.code}, message: ${error.message}`); return; } console.log(`cellular up size = ${stats}`); }); } build() { RelativeContainer() { Text(this.message) .id('Statistics') .fontSize($r('app.float.page_text_font_size')) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: '__container__', align: VerticalAlign.Center }, middle: { anchor: '__container__', align: HorizontalAlign.Center } }) .onClick(() => { this.message = 'Welcome'; this.getIfaceBytes(); this.getCellularBytes() }) } .height('100%') .width('100%') } } ``` **3.问题描述:** 调用<a href="elink@5e2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5c8X3A6K6i4K6u0V1j5i4m8A6M7#2)9J5k6r3&6W2N6q4)9J5k6s2y4@1j5i4c8A6M7%4c8A6j5%4y4Q4x3U0y4K6N6r3q4@1K9i4y4@1K9h3y4K6k6$3g2@1j5$3g2D9L8s2g2D9j5i4u0J5P5r3u0&6N6r3g2K6x3e0l9`.">getCellularRxBytes</a>/<a href="elink@a8aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5c8X3A6K6i4K6u0V1j5i4m8A6M7#2)9J5k6r3&6W2N6q4)9J5k6s2y4@1j5i4c8A6M7%4c8A6j5%4y4Q4x3U0y4K6N6r3q4@1K9i4y4@1K9h3y4K6k6$3g2@1j5$3g2D9L8s2g2D9j5i4u0@1P5r3u0&6N6r3g2K6x3e0l9`.">getCellularTxBytes</a>接口异常,`{"code":2103012,"message":"Get iface name failed"}`,如何解决? **解决方案:** 在使用Wi-Fi场景下,调用getCellularTxBytes会出现上述异常,切换到蜂窝流量调用即可。 **4.问题描述:** 手动连接无网Wi-Fi,不会弹“当前WLAN不可上网,是否继续使用此WLAN”弹窗。 **解决方案:** 弹框只在首次连接弹出,不会重复弹出。将热点删除后重新连接,弹框会再次弹出。 **5.问题描述:** 系统打开VPN导致ohso.request下载接口失败,其它RCP接口请求可以正常使用。 **解决方案:** 上传下载是在独立的SA进程,所以走VPN的应用不能使用ohso.request接口,RCP是在应用进程传输数据。 **6.问题描述:** 创建VPN时Config配置中网关地址与VPN IP地址是否可以不一致? **解决方案:** 网关地址与VPN分配的IP地址不在同一网段,会出现路由失效的情况,设备无法通过默认网关转发数据,导致连接超时或无法访问目标网络。应保证网关地址和VPN IP地址在同一网段,或将网关地址置空。 **7.问题描述:** 调试报错码2300023,Failed to write the received data to the disk/application.这个异常是接口超5M限制了吗?有什么解决方案? **解决方案:** 因为http请求中下载文件超过5M的阈值导致图片过大而报错,http发起请求的响应消息的最大字节限制默认值是510241024,设置响应数据最大字节限制为100M或是采用流式传输。 【修改建议】 - 方案一:maxLimit修改为100M。 ```ArkTS http.createHttp().request(url, { method: http.RequestMethod.GET, connectTimeout: 60000, readTimeout: 60000, maxLimit: 100 * 1024 * 1024, }, ``` - 方案二:采用流式传输。 ```ArkTS // 在dataReceive中拼接图片数据 let imageChunks: ArrayBuffer[] = []; httpRequest.on('dataReceive', (data: ArrayBuffer) => { imageChunks.push(data); console.info('收到分片,大小:' + data.byteLength + ' bytes'); }); httpRequest.on('dataEnd', () => { // 计算总长度 let totalLength = imageChunks.reduce((sum, chunk) => sum + chunk.byteLength, 0); let fullImage = new Uint8Array(totalLength); // 拼接所有分片数据 let offset = 0; for (let chunk of imageChunks) { fullImage.set(new Uint8Array(chunk), offset); offset += chunk.byteLength; } console.info('图片接收完成,总大小:' + totalLength + 'bytes'); const base64 = btoa(String.fromCharCode(...fullImage)); const imgSrc = `data:image/png;base64,${base64}`; console.info('可用于展示的图片 src:', imgSrc); }); ```
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
收藏
・
0
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
HarmonyOS SDK
258
发帖
190
回帖
0
RANK
关注
私信
他的文章
[原创]HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
270
[原创]AI 赋能 Push Kit 场景化消息开发,高效完成鸿蒙应用推送能力接入
472
[原创]HarmonyOS Push Kit 自分类权益 Skill,助力提升权益申请通过率
521
[原创]基于增强QUIC协议优化弱网下的直播观看体验
697
[原创]焕新鸿蒙应用权限管理方案,应用授权体验再升级
609
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部