
回复
作为一个曾在网络请求里熬夜debug的开发者,今天要分享HarmonyOS分布式网络的「黄金搭档」——HTTP传输与网络管理!之前做购物App时用这俩功能实现了秒级商品加载,现在把实战技巧全掏出来~
HarmonyOS的HTTP请求就像寄快递,不同方法对应不同服务:
import { http } from '@kit.NetworkKit';
// 1. 创快递员(带超时重连)
let httpRequest = http.createHttp();
let 重连次数 = 0;
// 2. 定义请求参数(带缓存)
let reqOption = {
method: http.RequestMethod.GET,
header: { 'Content-Type': 'application/json' },
usingCache: true, // 先看本地有没有缓存
connectTimeout: 30000, // 30秒超时
};
// 3. 发起请求(带重连逻辑)
function 查商品(id) {
httpRequest.request(
`https://api.shop.com/product/${id}`,
reqOption, (err, data) => {
if (!err) {
console.log('商品数据到啦:', data.result);
httpRequest.destroy();
} else if (重连次数 < 3) {
重连次数++;
console.log(`第${重连次数}次重连中...`);
查商品(id); // 自动重连
} else {
console.log('网络太差,显示缓存数据');
httpRequest.destroy();
}
}
);
}
// 4. 调用查询
查商品('12345');
HarmonyOS的网络管理像导航APP,能:
import { connection } from '@kit.NetworkKit';
// 1. 创建网络导航仪
let netNav = connection.createNetConnection({
netCapabilities: {
networkCap: [connection.NetCap.NET_CAPABILITY_INTERNET]
}
});
// 2. 订阅路况变化(带评分)
netNav.on('netAvailable', (netHandle) => {
// 看网络评分
connection.getNetQuality(netHandle.netId).then((quality) => {
let 评分 = quality.rssi; // 信号强度
console.log(`当前网络评分${评分}星`);
if (评分 < 3) {
console.log('网络差,图片压缩50%');
}
});
});
// 3. 没网时的处理
netNav.on('netUnavailable', () => {
console.log('加载本地缓存商品');
});
优化项 | 做法 | 效果 |
---|---|---|
数据压缩 | 启用gzip,传输体积减60% | 4G省流量30% |
并行请求 | 最多同时3个请求,不堵车 | 效率提升但不卡顿 |
弱网模式 | 2G/3G时图片降为100kb | 加载速度提升2倍 |
记得第一次做商品详情页时,没做网络优化,用户反馈「加载慢」。后来加了缓存和智能切换,4G下也能秒开~ 现在用户说「跟本地看一样快」,超有成就感!