问题描述:在小程序中,使用post请求提交form-data数据时,参数总会提示错误,而使用postman测试接口正常。
原因分析:尽管我们在wx.request中指定了'content-type'为'multipart/form-data',但是wx.request并不会为我们自动添加boundary,这时需要我们自己添加。
解决办法:
var paraname="postData";
var value="mydata";
wx.request({
url: 'http://www.test.com/post',
//接口地址
method: 'POST',
header: {
'content-type': 'multipart/form-data; boundary=XXX'
},
data: '\r\n--XXX' +
'\r\nContent-Disposition: form-data; name="'+ paraname +'"' +
'\r\n' +
'\r\n' + value +
'\r\n--XXX'
})
如果是多个参数,可以将value作为对象传递,也可以多个参数拼接。
var paraname1="postData1";
var value1="mydata1";
var paraname2="postData2";
var value2="mydata2";
wx.request({
url: 'http://www.test.com/post',
//接口地址
method: 'POST',
header: {
'content-type': 'multipart/form-data; boundary=XXX'
},
data: '\r\n--XXX' +
'\r\nContent-Disposition: form-data; name="'+ paraname1 +'"' +
'\r\n' +
'\r\n' + value1 +
'\r\n--XXX'
'\r\nContent-Disposition: form-data; name="'+ paraname2 +'"' +
'\r\n' +
'\r\n' + value2 +
'\r\n--XXX'
})
参考资料:https://developers.weixin.qq.com/community/develop/article/doc/0000cc0e5bc5d093c6f8be17254c13