微信小程序使用wx.request发送multipart/form-data请求的方法

前一阵子开发微信小程序功能,需要用到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);
    }
})

微信小程序使用wx.request发送multipart/form-data请求的方法

(0)
(0)
   
举报
评论 一句话评论(0
上一篇:教你用wifi广告软件给微信公众帐号吸粉


下一篇:ios微信分享---按照官方文档上配置缺不能正常启动微信客户端