在微信小程序中,http请求为multipart/form-data在wx.request 的请求中Cookie一直是失效,只能通过uploadfile来完成这样的请求,但是只是想传递Content-Type为multipart/form-data的String类型(不带图片)又无法传递。
header: {
“Content-Type”: “multipart/form-data”,
“Cookie”: “JSESSIONID=wKgByBroW8_nOOyBu8CynkHZs3MbTA2vYoEA”
}
这样
这到底是什么毛病。应该怎么做,求解答。
您好,我也发现有这个问题,我们的一个接口要求post的数据是form-data格式的,wx.request 设置header的 content-type 为 multipart/form-data,发现数据传不到后台,用Charles 抓包,发现一个错误,后台返回 no multipart boundary was found,
Charles 显示的请求头确实没有 boundary, 如下:
POST /mindoffice/visitor_unreservations/subscribeBill HTTP/1.1 Host: qas.zjzlnet.com Content-Length: 20 Pragma: no-cache Cache-Control: no-cache Origin: http://127.0.0.1:34785 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1809111 MicroMessenger/6.5.7 Language/zh_CN webview/ token/61f11dc1d5bc1cfd264bbe33ae8d2f95 content-type: multipart/form-data Accept: */* Referer: https://servicewechat.com/wx04c25e121b8ce5df/devtools/page-frame.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8 Connection: keep-alive {"data":"test data"} |
正确的请求头应该如下:
POST /mindoffice/visitor_unreservations/subscribeBill HTTP/1.1 Content-Type: multipart/form-data; boundary=7f81e6d3-da78-4610-82b5-b4906d630ab3 Content-Length: 407 Host: 115.29.7.124 Accept-Encoding: gzip User-Agent: okhttp/3.6.0 Connection: keep-alive --7f81e6d3-da78-4610-82b5-b4906d630ab3 content-disposition: form-data; name="data" Content-Length: 255 test data --7f81e6d3-da78-4610-82b5-b4906d630ab3-- |
有一对boundary包裹着上传的data
然而,wx.request 发出的请求并没有boundary ,故而报错;
看到楼上的答复,wx.uploadFile支持 multipart/form-data;
但是我并不需要传文件。。只是传键值对。。
请求官方给与答复,谢谢
楼主你解决这个问题了吗?
因为地址是用的我们本地的域名,所以直接粘到这里里
wx.uploadFile({
url: ‘http://********’,
// filePath: that.data.Images[0].url,
filePath: that.data.Images[0].url,
name: ‘uploadfile_ant’,
formData: {
“info”: “aaaa”,
“longti”: “0.0”,
“lati”: “0.0”,
“prio”: “aa”,
“username”: “aaaa”,
},
header: {
“Content-Type”: “multipart/form-data”,
“Cookie”:“JSESSIONID=wKgByBroW8_nOOyBu8CynkHZs3MbTA2vYoEA”
},
})
这样是可以执行的,但是图片地址不能为空
但是
wx.request({
url: ‘http://******’,
data: {
“info”: “aaaa”,
“longti”: “0.0”,
“lati”: “0.0”,
“prio”: “aa”,
“username”: “aaaa”,
},
method: “POST”,
header: {
“Content-Type”: “multipart/form-data”,
“Cookie”: “JSESSIONID=wKgByBroW8_nOOyBu8CynkHZs3MbTA2vYoEA”
},
success: function (res){
console.log(res);
},
fail: function () {
},
complete: function () {
}
})
这样cookie是传不过去的。