HarmonyOS NEXT版本钉签小程序使用uni-app的uni.request POST请求问题
HarmonyOS NEXT版本钉签小程序使用uni-app的uni.request POST请求问题
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 4.51 | HBuilderX |
操作步骤:
hbuilderX 运行支付宝小程序运行,切换到钉钉小程序,预览模式下,使用鸿蒙NEXT版本钉钉扫码预览
### 预期结果:
问题1:预期200:::
问题2:预期200:::
实际结果:
问题1:实际{“message”:“Parameter error”,“errMsg”:“request:fail Parameter error”} 问题2:实际415:::
### bug描述:
HarmonyOS NEXT版本钉钉小程序使用uni.request POST请求存在两个问题
问题1:uni.request post请求,data参数为undefined无法发起请求,疑似与HarmonyOS NEXT钉钉小程序兼容性问题,目前是临时采用强制data:{}解决
该问题在小程序模拟器、PC、Android、ios中不传递该参数均可正常访问,在HarmonyOS NEXT中提示{"message":"Parameter error","errMsg":"request:fail Parameter error"}
问题2:uni.request post请求,header设置contentType不生效,测试钉钉原生http请求写法重写,可以修改contentType
该问题在小程序模拟器、PC、Android、ios中均可正常访问,在HarmonyOS NEXT中提示415 Unsupported Media Type
更多关于HarmonyOS NEXT版本钉签小程序使用uni-app的uni.request POST请求问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
先缩小下问题范围,你的代码在电脑钉钉小程序模拟器中运行是否正常,在 安卓 ios 真机上是否正常?
我使用下面的代码,vue3+HBuilderX alpha 4.51 运行到鸿蒙next 真机上,用钉钉扫码访问,表现正常,你给的 api 我访问不同,我修改了一个 api,你可以自己验证
我发现两个请求 content-type 都是 json,你可以修改我给的 demo 复现你的问题
更新:
我仔细测试了你提供的 demo,在 vendor.js 中搜索 key.toLocaleLowerCase() 临时兼容 Content-Type
if (key.toLocaleLowerCase() === ‘content-type’) {
headers[‘Content-Type’] = fromArgs.header[key]
} else {
headers[key.toLocaleLowerCase()] = fromArgs.header[key]
}
经过我测试问题 2 解决了
更新:
2025-03-07 验证最新版鸿蒙钉钉已经兼容 header 写法。这个改动会回退到兼容之前,避免其他系统出现兼容问题。
更多关于HarmonyOS NEXT版本钉签小程序使用uni-app的uni.request POST请求问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
初步排查是鸿蒙钉钉小程序真机环境的问题,其他平台无问题,考虑合适的兼容方案。
下个 Alpha 会兼容修复
@DCloud_UNI_OttoJi
相关问题,我已重新整理修改提交,辛苦您按照我提供的demo使用鸿蒙NEXT版本钉钉真机验证一下。ps: 您提供的这个API接口,应该是application/x-www-form-urlencoded和application/json两种方式都支持,所以可以正常访问
我看原先和content-type被删除掉了, 这块是否可以保留?
服务端如有依赖content-type的逻辑的话, 现有业务不做改造会出错
你先临时修改保证不阻塞你代码吧,你私聊我吧,我看如何处理比较友好。之前测试了几个 api,发现服务端会自动处理 content-type 大小写