关于微信小程序获取小程序码并接受buffer流保存为图片的方法
程序员文章站
2023-01-10 09:11:56
前言
昨天因为小程序功能要获取小程序程序码,看了微信文档爬了好多坑。(留一下记录以防后面被坑)
操作
因为我获取到了微信那里的图片的图片流一直不知道怎么处理,今天总算...
前言
昨天因为小程序功能要获取小程序程序码,看了微信文档爬了好多坑。(留一下记录以防后面被坑)
操作
因为我获取到了微信那里的图片的图片流一直不知道怎么处理,今天总算找到相关文档,解决了。因为数据流不能直接传给前端,只好把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<byte> bytes = new list<byte>(); int temp = stream.readbyte(); while (temp != -1) { bytes.add((byte)temp); temp = stream.readbyte(); } return bytes.toarray(); }
结尾
最近才接触到微信小程序开发,emmmm。觉得自己摸鱼摸得好厉害,不过终于把坑爬出来,特别开心。哈哈哈~以后要多多写开发记录。上班期间码得很随意
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
上一篇: 吃完火锅吃什么减肥效果比较好