微信ウィジェットについてウィジェットコードを取得しbufferストリームを画像として保存する

8361 ワード

前言
昨日、ウィジェット機能でウィジェットコードを取得しようとしたので、微信のドキュメントを見てたくさんの穴を這いました.(後ろに穴があいないように記録を残しておく)
操作
私は微信のところの画像のストリームを手に入れたので、ずっとどのように処理するか分からないので、今日やっと関連ドキュメントを見つけて、解決しました.データストリームがフロントエンドに直接伝わらないので、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に触れたばかりです.自分で魚を触るのはすごいと思いましたが、やっと穴を這い出して、とても楽しかったです.ハハハ~これから開発記録をたくさん書きます.出勤中はコードが自由だ
転載先:https://www.cnblogs.com/vilva/p/10830390.html