发布:2022/3/26 17:13:57作者:管理员 来源:本站 浏览次数:1272
一)我先用的小程序端的wx.request去调用API,发现竟然是一个坑!
复制代码
wx.request({
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + token,
method: "POST",
responseType: 'arraybuffer',
data: {
scene: 111, //这里填写url的参数,最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~
page: 'pages/index/index', //这里填写你要跳转的小程序页面,前面不能加/哦,必须为发布后的页面
width: 1024 //小程序码的边长,单位px,范围[280,1280]
},
header: {
'content-type': 'application/json;charset=UTF-8'
},
success(res) {
var base64 = wx.arrayBufferToBase64(res.data);
that.setData({
qrCodeSrc: "data:image/png;base64," + base64
});
}
})
复制代码
这段代码在开发工具的模拟器中是可以正常显示的,而且在真机调试中也可以正常显示。
但是在预览,体验版,正式版都无法显示。
无法显示的原因是:该请求无响应。
二)没办法,只能去asp.net的服务端调用API
复制代码
int scene = 0;
int.TryParse(context.Request.Params["scene"], out scene);
string access_token =...; //这里写你调用token的方法
if (access_token == "")
return "{\"errcode\":1,\"errmsg\":\"缺少access_token\"}";
string postUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token;
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string options = "{\"scene\":\"" + scene + "\",\"page\":\"pages/index/index\",\"width\":\"1024\"}";
byte[] payload = Encoding.UTF8.GetBytes(options);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream stream = response.GetResponseStream();
List<byte> bytes = new List<byte>();
int temp = stream.ReadByte();
while (temp != -1)
{
bytes.Add((byte)temp);
temp = stream.ReadByte();
}
byte[] result = bytes.ToArray();
string base64 = Convert.ToBase64String(result);//将byte[]转为base64
return "{\"errcode\":0,\"errmsg\":\"获取成功\",\"buffer\":\"" + base64 + "\"}";
复制代码
三)扫码后小程序端接收参数
onLoad: function (options) {
var id = options.id || decodeURIComponent(options.scene);
//options.id是页面url参数,options.scene是扫码带入的参数
}
四)后记
关于这个坑,百度找到的网友解释是:
1)request的合法域名中没有api.weixin.qq.com
2)request的合法域名不能配置api.weixin.qq.com
所以,api.weixin.qq.com可能不能用于小程序端的请求。
对于这个解释我只能默认了,如有人反驳跪求留言
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4