在微信小程序中,http请求为multipart/form-data在wx.request 的请求中Cookie一直是失效,只能通过uploadfile来完成这样的请求,但是只是想传递Content-Type为multipart/form-data的String类型(不带图片)又无法传递。
header: {
"Content-Type": "multipart/form-data",
"Cookie": "JSESSIONID=wKgByBroW8_nOOyBu8CynkHZs3MbTA2vYoEA"
}
这样
这到底是什么毛病。应该怎么做,求解答。
麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题
因为地址是用的我们本地的域名,所以直接粘到这里里
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是传不过去的。
麻烦按教程提供下,这样贴代码比较难查
您好,我碰到了同样的问题,能看一下楼下我的回复吗?谢谢
正常用request执行 Content-Type为multipart/form-data的请求的时候,后台获取不到multipart请求的参数拒绝请求,但是如果用wx.uploadFile的话可以传参成功但是必须上传一张图片,目前用的是wx.uploadFile,有没有用wx.uploadFile只传递参数,不上传图片的方法?
我楼上回的评论。。和你描述的一毛一样。。。同问。。。。
我也是遇到这种,但是不需要上传图片
您好,我也发现有这个问题,我们的一个接口要求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是传不过去的。