HarmonyOS 鸿蒙Next Http get 请求通过 extraData 传递 Query 时只支持 string, number 和 boolean 会丢失

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Http get 请求通过 extraData 传递 Query 时只支持 string, number 和 boolean 会丢失

Http get 请求 通过 extraData 传递 Query 时只支持 string, number 和 boolean 会丢失 

3 回复

解决方案

query 入参进行转换, bodyType object 才做转换。 string 时候无效转换

private formatQuery(body: BodyType) { 
  const t: Record<string, string> = {} 
  let p: Array<string|number|boolean> 
  for (p of Object.entries(body)) { 
    t[`${p[0]}`] = `${p[1]}` 
  } 
  this.extraData = t 
}

封装请求的时候需要加一段这个,这个框架库不能处理吗?直接把值按字符串处理,现在直接丢失,没见一个库是这样的

在HarmonyOS鸿蒙系统中,使用Next Http库进行GET请求时,通过extraData传递Query参数确实存在限制,主要支持的数据类型为stringnumberboolean。这是因为HTTP协议本身在传递参数时,通常会将它们序列化为字符串形式。对于其他复杂数据类型(如对象、数组等),直接传递可能会导致数据丢失或格式错误。

若你需要在GET请求中传递复杂数据,建议采取以下几种方法:

  1. 数据序列化:将复杂数据转换为JSON字符串,然后将其作为单一字符串参数传递。接收方在收到数据后,再进行反序列化以恢复原始数据结构。

  2. 使用POST请求:如果GET请求的参数限制影响了你的需求,可以考虑改用POST请求。POST请求可以在请求体中传递更复杂的数据结构,且不受URL长度限制的影响。

  3. 参数拆分:将复杂数据拆分成多个基本类型的参数,分别传递。

请注意,以上方法的选择应根据你的具体应用场景和需求来决定。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部