HarmonyOS鸿蒙Next中网络请求返回的数据跟抓包工具返回的数据不一样???

HarmonyOS鸿蒙Next中网络请求返回的数据跟抓包工具返回的数据不一样??? 如下图公司的网络请求是封装的@ohos+axios@2.2.2,res是返回的,没有经过处理的,这个id为什么就变了呢,现在有个接口是删除的接口,要传id这个返回的id跟抓包返回 的id不一样,导致接口一直报错,删除不了,也试过模型class 上用bigint来接收,还是不行,这真奇怪了,完全不知道怎么解决8600这个id在抓包软件中搜索,也只搜索到了删除那个接口返回 的这个86800

![Snip20241123_22.png](data-originheight=“429” data-originwidth=“1160” src="https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/561/391/359/0030086000561391359.20241123191744.05839730697046561536215392520889:50001231000000:2800:7EE719B9AA7C52C70F87E659FC5019900A6C842CE6924D03E7AA8CA40952B842.png)


更多关于HarmonyOS鸿蒙Next中网络请求返回的数据跟抓包工具返回的数据不一样???的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

考虑到安卓跟iOS都上线了,处理为,鸿蒙自己处理,最后解决代码如下

export function testApi(pageNo: number, pageSize: number): Promise<ResponseData<PoiModel>[]> {
  return netRequest.get<ResponseData<PoiModel>[]>({
    url: "/tworki/ites",
    params: { pageNo, pageSize},
    headers: { "Accept": "application/json" } as AxiosRequestHeaders,
    transformResponse: (jsonString: string) => {
      jsonString = jsonString.replace(/("id": )(\d+)/g, '$1"$2"');
      // 把id字段的数字转为字符串
      let matches = jsonString.match(/("id":)(\d+)/g);
      if (matches) {
        matches.forEach(match => {
          let numberPart = match.split(':')[1];
          let quotedMatch = match.replace(numberPart, `"${numberPart}"`);
          jsonString = jsonString.replace(match, quotedMatch);
        });
      }
      return JSON.parse(jsonString)
    }
  }).then((res) => {
    let jsonObj: Array<object> = res.data
    let datas: PoiModel[] = plainToInstance(PoiModel, jsonObj)
    res.data = datas
    return res
  })
}

更多关于HarmonyOS鸿蒙Next中网络请求返回的数据跟抓包工具返回的数据不一样???的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是因为 JavaScript 中数字的精度是有限的,Java 的 Long 类型的数字超出了 JavaScript 的处理范围。JavaScript 内部只有一种数字类型 Number,所有数字都是采用 IEEE 754 标准定义的双精度 64 位格式存储,即使整数也是如此。建议服务端把数据类型改为string。

你这是JS的float类型转换问题,

在HarmonyOS鸿蒙Next中,网络请求返回的数据与抓包工具返回的数据不一致,可能是由于以下原因:

  1. 数据加密/解密:鸿蒙Next可能对网络请求的数据进行了加密,而抓包工具捕获的是未加密的原始数据,导致两者不一致。

  2. 协议处理差异:鸿蒙Next可能对网络协议进行了特殊处理或优化,抓包工具捕获的是原始的协议数据,而鸿蒙Next处理后的数据可能有所不同。

  3. 数据压缩:鸿蒙Next可能对网络请求的数据进行了压缩,抓包工具捕获的是未压缩的数据,导致两者不一致。

  4. 缓存机制:鸿蒙Next可能在本地缓存了部分数据,网络请求返回的数据可能来自缓存,而抓包工具捕获的是服务器返回的原始数据。

  5. 数据格式转换:鸿蒙Next可能对返回的数据进行了格式转换或处理,抓包工具捕获的是原始的服务器响应数据,导致两者不一致。

  6. 网络中间件:鸿蒙Next可能使用了某些网络中间件或代理,这些中间件可能对数据进行了修改或过滤,抓包工具捕获的是经过中间件处理前的数据。

  7. 时间戳或动态数据:如果返回的数据中包含时间戳或其他动态生成的内容,鸿蒙Next和抓包工具捕获的数据可能会因为时间差异而不一致。

  8. 协议版本差异:鸿蒙Next可能使用了与抓包工具不同的协议版本,导致数据解析结果不同。

解决此类问题,通常需要对比鸿蒙Next的网络请求实现与抓包工具捕获的原始数据,分析差异点,确定具体原因。

在HarmonyOS鸿蒙Next中,网络请求返回的数据与抓包工具返回的数据不一致,可能由以下原因导致:

  1. 加密或压缩:服务器对数据进行了加密或压缩,抓包工具显示的是原始数据,而应用层已进行解密或解压。
  2. 缓存机制:应用可能使用了缓存机制,导致返回的是缓存数据而非实时数据。
  3. 代理或重定向:网络请求可能经过代理或重定向,抓包工具捕捉的是实际请求路径,而应用收到的是最终响应。
  4. 数据解析差异:应用层对数据进行了额外的解析或处理,导致与抓包工具显示的原始数据不同。

建议检查网络请求的实现逻辑,确认是否有上述情况,并使用调试工具进一步验证数据流。

回到顶部