HarmonyOS 鸿蒙Next axios Get 参数传入数组会导致请求被拦截

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

HarmonyOS 鸿蒙Next axios Get 参数传入数组会导致请求被拦截

我这边需要Get请求参数里面加入数组的, 但是我这边调试的时候发现传入数组会被拦截. 网上解决方案都是URLEncode,但是这种情况原有的接口得改动.我想问一下有没有别的方式解决这个问题,不需要动后端
 

2 回复
当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT等方法时,只能通过Encode转化成string类型,让后端去调整接口,参考文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http-V5#httprequestoptions

在HarmonyOS鸿蒙系统中使用axios进行HTTP GET请求时,如果尝试直接将数组作为查询参数传递,可能会导致请求被拦截或参数处理不正确。这是因为HTTP GET请求通常通过URL传递参数,而URL编码对数组的支持有限,需要特别处理。

在axios中,当你传递一个对象包含数组作为参数时,axios会使用qs库(或类似机制)将对象序列化为查询字符串。默认情况下,qs库会将数组参数编码为key[]=value1&key[]=value2的形式,但某些服务器或中间件可能不支持这种编码方式,或者需要特定的配置才能正确解析。

为了解决这个问题,你可以尝试以下几种方法:

  1. 修改数组参数的编码方式:使用qs库的自定义序列化选项,将数组参数编码为服务器能正确解析的格式,如key=value1,value2

  2. 将数组转换为字符串:在传递之前,将数组转换为JSON字符串或逗号分隔的字符串,然后在服务器端进行相应解析。

  3. 使用POST请求:如果GET请求的参数处理过于复杂,考虑改用POST请求,通过请求体传递数组数据。

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

回到顶部