uniapp项目中通过uni.request发送formData数据请求

在最新的分销商项目中,遇到与客户防窜货系统对接的挑战。使用uni.request发起请求时,请求体始终显示为RequestPayload导致错误。尝试了网上提供的使用formData和fly.js的解决方案未果。最终,通过修改uni.request的header,设置Content-Type:application/x-www-form-urlencoded成功解决了接口调用问题。
摘要由CSDN通过智能技术生成

最新一个分销商项目中需要与客户的另外的防窜货系统对接,具需求是:
1、系统发货前扫描产品上面的防窜货码,验证防窜货码是否有效;
2、订单发货提交时,提交所有防窜货码变更订单状态。

对方接口如下:
在这里插入图片描述
在这里插入图片描述
尝试通过uni.request发请求,代码如下:

uni.request({
							url: "接口域名/xlsapi/retail/api/LZY/CheckCode",
							data: {
								code: res.result,
								distributorCode: uid,
								productCode: '1',
								brandId: '0000',
								account: '0000',
								passWord: '0000',
								sign: md5sign
							},
							method: 'POST',
							header: {
								"User-Agent": "Apifox/1.0.0 (https://apifox.com)"
							},
							success: (cres) => {
								console.log(cres);
							}
						});

微信小程序开发控制台调试请求如下:
在这里插入图片描述
请求一直是Request Payload,导致返回错误 ,通过网上找了几个方案,.一个是通过JS封闭传递formData类型的数据,使用fly.js,试了一下比较麻烦没有成功,另一个方案是通过uni.uploadFile进行封装提交。示例代码如下:

uni.chooseImage({
	success: (chooseImageRes) => {
		const tempFilePaths = chooseImageRes.tempFilePaths;
		const uploadTask = uni.uploadFile({
			url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
			filePath: tempFilePaths[0],
			name: 'file',
			formData: {
				'user': 'test'
			},
			success: (uploadFileRes) => {
				console.log(uploadFileRes.data);
			}
		});

		uploadTask.onProgressUpdate((res) => {
			console.log('上传进度' + res.progress);
			console.log('已经上传的数据长度' + res.totalBytesSent);
			console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);

			// 测试条件,取消上传任务。
			if (res.progress > 50) {
				uploadTask.abort();
			}
		});
	}
});

这两个网的方案也都试了一下,最终仍然无法使用,最后通过修改请求的header参数为:
“Content-Type”: “application/x-www-form-urlencoded”
控制台调试如下:
在这里插入图片描述
接口调试通过!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值