今日楼主正在搞原生小程序,想搞一下转发功能,而转发功能就需要获取到小程序码,方便别人识别二维码并进入小程序;起因,楼主按照官网,先获取access_token;然后拿着access_token去获取小程序码,奈何经验不足,获取回来的二进制流不会处理。不过,奋斗了一上午,中午知道原因在哪了?下面咱们来讲一下。1、先看获取小程序码的官方api(共有三种,根据需求自己选择,楼主选不受限制的)2、获取小程序的access_token官方api3、调用获取小程序码的接口 官方api(重点) console.log(‘小程序码===接口调用’) var that = this; wx.request({ url: ‘https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=’ + this.data.access_token, // c method: “POST”, data: { scene: ‘guoguo’ }, success: function (res) { console.log(res) let data = wx.arrayBufferToBase64(res.data); that.setData({ imgSrc: ‘data:image/png;base64,’ + data }) }, fail: function (res) { console.log(‘fail’) } })获取到的结果为下图,图片的二进制流,并且我用wx.arrayBufferToBase64(res.data)去转这个,为啥也转不出来呢???好了,言归正传:如何解决呢?其实很简单,咱们忽略了一点,就是请求的响应类型,默认情况下是字符串的,咱们需要 设置为2进制数组,用数组的语法来处理2进制数据;直接上代码! 一段完整的代码【responseType的类型请看官方文档】 var that = this; wx.request({ url: ‘https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=’ + this.data.access_token, method: “POST”, data: { scene: ‘guoguo’ }, responseType: ‘arraybuffer’, // arraybuffer是以数组的语法处理二进制数据,称为二进制数组。 success: function (res) { let data = wx.arrayBufferToBase64(res.data); console.log(‘wx.arrayBufferToBase64’) console.log(data) that.setData({ imgSrc: ‘data:image/png;base64,’ + data }) }, fail: function (res) { console.log(‘fail’) } })4、那么又有人来问了,转完之后为什么还要在前面加上【data:image/png;base64,】,这又是什么?下面都是干货。。。翻阅了一些资料才知道,这是在RFC2397中定义的Data URI scheme,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。优点: 减少HTTP请求数,没有了TCP连接消耗和同一域名下浏览器的并发数限制。对于小文件会降低带宽。虽然编码后数据量会增加,但是却减少了http头,当http头的数据量大于文件编码的增量,那么就会降低带宽。对于HTTPS站点,HTTPS和HTTP混用会有安全提示,而HTTPS相对于HTTP来讲开销要大更多,所以Data URI在这方面的优势更明显。可以把整个多媒体页面保存为一个文件。缺点: 无法被重复利用,同一个文档应用多次同一个内容,则需要重复多次,数据量大量增加,增加了下载时间。无法被独自缓存,所以其包含文档重新加载时,它也要重新加载。客户端需要重新解码和显示,增加了点消耗。不支持数据压缩,base64编码会增加1/3大小,而urlencode后数据量会增加更多。不利于安全软件的过滤,同时也存在一定的安全隐患。什么是Data URI Scheme《HTTP权威指南》对URI和URL的定义:URI(Uniform Resource Identifier):统一资源标识符,服务器资源名被称为统一资源标识符。URL(Uniform Resource Locator):统一资源定位符,描述了一台特定服务器上某资源的特定位置。URN(Uniform Resource Name):统一资源名称。URL组成:协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragmentprotocol :// hostname[:port] / path / [:parameters][?query]#fragmentURI,URL,URN三者关系:URL,URN是URI的子集data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。Data URI的格式规范data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data>1. data :协议名称;2. [<mime type>] :可选项,数据类型(image/png、text/plain等)3. [;charset=<charset>] :可选项,源文本的字符集编码方式4. [;<encoding>] :数据编码方式(默认US-ASCII,BASE64两种)5. ,<encoded data> :编码后的数据目前,Data URI scheme支持的类型有:data:, 文本数据data:text/plain, 文本数据data:text/html, HTML代码data:text/html;base64, base64编码的HTML代码data:text/css, CSS代码data:text/css;base64, base64编码的CSS代码data:text/javascript, Javascript代码data:text/javascript;base64, base64编码的Javascript代码data:image/gif;base64, base64编码的gif图片数据data:image/png;base64, base64编码的png图片数据data:image/jpeg;base64, base64编码的jpeg图片数据data:image/x-icon;base64, base64编码的icon图片数据<img src = ‘data:image/png;base64,’ + base64>data:image/png;base64相当于图片的Data URL,它是利用base64编码把图片数据翻译成标准ASCII字符,等同于<img src=”images/image.png”/> 换句话说我们把图像文件的内容内置在 HTML 文件中,节省了一个 HTTP 请求
微信小程序开发的坑—获取小程序码
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序开发的坑—获取小程序码
相关推荐
电商小程序的价值有哪些
如何实现线上卖断货?私域流量与公域流量哪个重要?15013808327
数据恢复软件(二):用C++重写恢复B乐都县E企盈小程序MP位图文件的小程序
公众号再次改版高坪区E企盈小程序小程序又多了一个入口
微信小程序加载图片时,湘桥区E企盈小程序先拉长,再恢复正常
转:(很有用)有多个按钮,点击一个变色,点击另吴中区E企盈小程序一个变色,原来的恢复颜色的方法
第12课微信小程序Component构造器自道里区E企盈小程序定义组件:
导航中的南海区E企盈小程序小竖线总结
小程序:after实现德格县E企盈小程序1px纵向分割线
汉沽区E企盈小程序企业微信内测朋友圈和客户群功能:小程序C位出道!
小程序运行加载密山市E企盈小程序机制
小程通城县E企盈小程序序中间有字的分隔线
最新评论
独特万商直播系统,直播系统技术开发公司
万商直播系统开发公司
优秀的团队,万商直播管理系统
不错的小程序案例
优秀的团队,不错的服务!
讲的很好
主播长的帅气
好系统好服务