HarmonyOS 鸿蒙Next HTTP使用Map传参问题

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next HTTP使用Map传参问题

//typescript
let params = new Map<string, string>()
params.set(‘pageCode’, ‘10000’)
let client = http.createHttp()
client.request(Url.BASE_URL + Url.JSON_MODEL, { extraData: params }, (err: BusinessError, data: http.HttpResponse) => {
if (!err) {
console.info(JSON.stringify(data.result))
} else {
console.error(JSON.stringify(err))
}
}) 

Map使用set方法后台无法获取到前端传的参数pageCode


更多关于HarmonyOS 鸿蒙Next HTTP使用Map传参问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
map无法被序列化,不是有效的参数,如需传递map类型的参数,可以把键值用类的形式构建出来,然后用new出一个类对象来传递。

网络请求中的入参参考 HttpRequestOptions.extraData 描述,文档链接:@ohos.net.http (数据请求)-ArkTS API-Network Kit(网络服务)-网络-系统 - 华为HarmonyOS开发者 (huawei.com)

框架的支持度是固定的,技术实现上的实现可以自定义调整,如

1,content-Type'为'application/x-www-form-urlencoded'时,请求提交的信息主体数据应在key和value进行URL转码后按照键值对"key1=value1&key2=value2&key3=value3"的方式进行编码,该字段对应的类型通常为String;

2,content-Type'为'application/json'时,将对象的属性值设置为JSON字符串,{param: jsonStr},获取到接收端获取到param后再解析

更多关于HarmonyOS 鸿蒙Next HTTP使用Map传参问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


为什么要用Map,你用的是TS!

换成这个咯

Record<string, string> 

针对HarmonyOS 鸿蒙Next HTTP使用Map传参问题,以下是一些关键点:

在HarmonyOS中,Map的使用基本遵循JavaScript的标准。当需要使用Map作为HTTP请求的参数时,确保Map对象已正确初始化并赋值。由于Map允许存储任何类型的键和值,因此可以灵活地构建请求参数。

然而,HTTP请求通常期望参数为特定的格式,如JSON。因此,在发送请求之前,需要将Map对象转换为JSON字符串。这可以通过使用JSON.stringify()方法实现。

此外,还需要注意HTTP请求的类型(如GET、POST)以及请求头的设置。对于POST请求,通常需要将JSON字符串作为请求的body发送,并设置正确的Content-Type(如application/json)。

如果在HarmonyOS鸿蒙Next中使用Map传参遇到问题,请检查以下几点:

  • 确保Map对象已正确初始化并赋值。
  • 将Map对象转换为JSON字符串后再发送。
  • 设置正确的HTTP请求类型和请求头。
  • 检查服务器端是否支持接收JSON格式的参数。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部