博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于微信小程序获取小程序码并接受buffer流保存为图片
阅读量:5087 次
发布时间:2019-06-13

本文共 3414 字,大约阅读时间需要 11 分钟。

前言

  昨天因为小程序功能要获取小程序程序码,看了微信文档爬了好多坑。(留一下记录以防后面被坑)

操作

  因为我获取到了微信那里的图片的图片流一直不知道怎么处理,今天总算找到相关文档,解决了。因为数据流不能直接传给前端,只好把buffer流转成图片保存在服务器上,没办法啊~

废话不多说上代码 

public static string Api_Post(string postUrl, string postData, WebHeaderCollection header = null,bool isPic=false)      {            Stream outstream = null;            Stream instream = null;            StreamReader sr = null;            HttpWebResponse response = null;            HttpWebRequest request = null;            Encoding encoding = Encoding.UTF8;            byte[] data = encoding.GetBytes(postData);            // 准备请求...            try            {                // 设置参数                request = WebRequest.Create(postUrl) as HttpWebRequest;                CookieContainer cookieContainer = new CookieContainer();                request.CookieContainer = cookieContainer;                request.AllowAutoRedirect = true;                request.Method = "POST";                request.ContentType = "application/x-www-form-urlencoded";                if (header != null) request.Headers = header;                request.ContentLength = data.Length;                outstream = request.GetRequestStream();                outstream.Write(data, 0, data.Length);                outstream.Close();                //发送请求并获取相应回应数据                response = request.GetResponse() as HttpWebResponse;                //直到request.GetResponse()程序才开始向目标网页发送Post请求                instream = response.GetResponseStream(); if (isPic)                {                    byte[] tt = StreamToBytes(instream);//将数据流转为byte[]                    System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath("~/WxCode.jpg"), tt);                    WxQRCodeModel model = new WxQRCodeModel();                    model.data = "192.168.1.216:80/WxCode.jpg";                    model.errcode = 0;                    string content = Config.js.Serialize(model);                    string err = string.Empty;                    return content;                }                else                {                    sr = new StreamReader(instream, encoding);                    //返回结果网页(html)代码                    string content = sr.ReadToEnd();                    string err = string.Empty;                    return content;                }            }            catch (Exception ex)            {                if (isPic)                {                    sr = new StreamReader(instream, encoding);                    //返回结果网页(html)代码                    string content = sr.ReadToEnd();                    string err = string.Empty;                    return content;                }                else                {                    string err = ex.Message;                    return string.Empty;                }            }        }

因为是instream接受到微信接口那里发送过来的数据流,就在instream那里处理,把数据流转换为byte[]数组,然后依靠File的WriteAllBytes方法把转换OK的byte[]数组转换为图片存放在服务器上,然后把图片路径交给model。

///将数据流转为byte[]        public static byte[] StreamToBytes(Stream stream)        {            List
bytes = new List
(); int temp = stream.ReadByte(); while (temp != -1) { bytes.Add((byte)temp); temp = stream.ReadByte(); } return bytes.ToArray(); }

结尾

最近才接触到微信小程序开发,emmmm。觉得自己摸鱼摸得好厉害,不过终于把坑爬出来,特别开心。哈哈哈~以后要多多写开发记录。上班期间码得很随意

转载于:https://www.cnblogs.com/vilva/p/10830390.html

你可能感兴趣的文章
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>