最新一个分销商项目中需要与客户的另外的防窜货系统对接,具需求是:
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”
控制台调试如下:
在这里插入图片描述
接口调试通过!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐