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