前一阵子开发微信小程序功能,需要用到wx.request请求服务器接口,接口需要传递form-data参数,但是按官方文档提供的wx.request请求总是不成功。
找了些资料都说wx.request不支持,得用wx.uploadFile来实现。其实是可以的,只是没有找到正确的打开方式而已。
经过参考一些资料以及多次试验,最终解决了这个问题,特意整理一下。整个调试及解决问题的过程如下:
1、确认服务器接口是否正常。
使用postman访问服务器接口,按要求传递参数,结果返回正常,说明服务器接口没有问题。
2、通过多次调试,最终问题确定在content-type和data范围内。
网上有些资料说wx.request中content-type无法使用multipart/form-data,但是尝试了application/json、application/x-www-form-urlencoded等多种方式都不行。
然而在postman中使用multipart/form-data是成功的,所以判定content-type使用multipart/form-data是正确的,问题可能是data数据的格式造成的。
3、尝试修改data数据格式,问题解决。
首先,将data格式传递json对象,结果失败。
其次,将data格式传递json字符串,结果仍然失败。
最后,参考了网上一个例子,将data格式做如下拼接后问题解决:
wx.request({ url: "http://接口地址", method: ‘POST‘, data: ‘\r\n--XXX‘ + ‘\r\nContent-Disposition: form-data; name="参数名称"‘ + ‘\r\n‘ + ‘\r\n‘ + JSON.stringify(postData) + ‘\r\n--XXX‘, header: { ‘content-type‘: ‘multipart/form-data; boundary=XXX‘ }, success: function(res) { //参数值为res.data,直接将返回的数据传入 doSuccess(res.data); }, fail: function(res) { doFail(res); } })
踩
(0)
赞
(0)
举报
评论 一句话评论(0)