抖音小程序开发,在电脑上模拟器 发送post、get数据 一切正常,但是换到了 真机调试 时 服务器就收不到。
原因:
因为我的数据 不是直接 调用 tt.request 发送,而是对它进行了二次封装,都数据进行了编制后才发送, 逐一排查,最后发现模拟器上是使用了 btoa 对数据进行了二进制编码。
但是小程序真实环境下又把 btoa 函数给删减了,必须使用 tt.arrayBufferToBase64() 把 Uint8 数组转换成 base64 字符串
解决办法:
let str = '要进行base64编码的字符串'
// 先把 字符串 转换成 Uint8 数组
let uint8array = Uint8Array.from(str, function (char) {
return char.charCodeAt(0);
});
// 再调用 tt.arrayBufferToBase64 把 uint8array 转换成 base64 字符串
let base64_str = tt.arrayBufferToBase64(uint8array);