Http接口缓存获取不到缓存数据 原创
头像 烈火 2025-10-21 20:33:28    发布
2523 浏览 17 点赞 6 收藏

Http请求是我在代码中设置:

import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Index{
  @State message:string = ''

  build() {
    Column(){
      Button("http缓存").width(100).height(100)
        .onClick(()=>{
          let httpResponseCache = http.createHttpResponseCache();
          let httpRequest = http.createHttp();
          httpRequest.request("http://XXXX", (err: BusinessError, data: http.HttpResponse) => {
            if (!err) {
              httpResponseCache.flush((err: BusinessError) => {
                if (err) {
                  this.message = "message"
                  console.error('flush fail');
                }
                this.message = "message"
                console.info('flush success');
              });
              httpRequest.destroy();
            } else {
              console.error('error:' + JSON.stringify(err));
              // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。
              httpRequest.destroy();
            }
          });
        })
      Button(this.message)
    }
  }
}

问题是能打印到日志 flush success ,关闭网络重新打开app获取不到缓存数据,这就很奇怪了。

代码没有问题,因为我使用一个链接试了一下正常,为什么在项目里就是不行的。我看了一下差异就在请求头的设置上发现了问题,因为项目需要我在请求头中只有'Content-Type': "application/json"时,无网络加载缓存正常。当请求头增加如'channel': 'harmony'字段时,无网络加载缓存错误,显示错误内容:Couldn't connect to server。

但是服务器接口又必须有请求头,这时我卸载重装再试正常了。

总结:可能因为之前其他缓存影响,导致此IP地址缓存失败,重新清空下浏览器缓存或者重新卸载安装APP就可以了。




©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它

暂无评论数据

发布

头像

烈火

青春一去不复返,事业一纵永无成。

10

帖子

1

提问

2239

粉丝

关注
最新发布

HarmonyOS V1到V2迁移,好用!

2026-01-07 15:58:35    发布

CodeGenie分析

2026-01-07 15:41:28    发布
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255