HarmonyOS 鸿蒙Next Http get 请求通过 extraData 传递 Query 时只支持 string, number 和 boolean 会丢失
HarmonyOS 鸿蒙Next Http get 请求通过 extraData 传递 Query 时只支持 string, number 和 boolean 会丢失
解决方案
对 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参数确实存在限制,主要支持的数据类型为string
、number
和boolean
。这是因为HTTP协议本身在传递参数时,通常会将它们序列化为字符串形式。对于其他复杂数据类型(如对象、数组等),直接传递可能会导致数据丢失或格式错误。
若你需要在GET请求中传递复杂数据,建议采取以下几种方法:
-
数据序列化:将复杂数据转换为JSON字符串,然后将其作为单一字符串参数传递。接收方在收到数据后,再进行反序列化以恢复原始数据结构。
-
使用POST请求:如果GET请求的参数限制影响了你的需求,可以考虑改用POST请求。POST请求可以在请求体中传递更复杂的数据结构,且不受URL长度限制的影响。
-
参数拆分:将复杂数据拆分成多个基本类型的参数,分别传递。
请注意,以上方法的选择应根据你的具体应用场景和需求来决定。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。