微信ウィジェットについてウィジェットコードを取得しbufferストリームを画像として保存する
8361 ワード
前言
昨日、ウィジェット機能でウィジェットコードを取得しようとしたので、微信のドキュメントを見てたくさんの穴を這いました.(後ろに穴があいないように記録を残しておく)
操作
私は微信のところの画像のストリームを手に入れたので、ずっとどのように処理するか分からないので、今日やっと関連ドキュメントを見つけて、解決しました.データストリームがフロントエンドに直接伝わらないので、bufferストリームを画像にしてサーバに保存するしかないので、仕方ないでしょう.
くだらないことはあまりコードを言わない
instreamが微信インタフェースから送信されたデータストリームを受信したので、instreamで処理し、データストリームをbyte[]配列に変換し、FileのWriteAllBytesメソッドで変換OKのbyte[]配列を画像に変換してサーバに格納し、画像パスをmodelに渡す.
の最後の部分
最近、微信ウィジェットの開発、emmmmに触れたばかりです.自分で魚を触るのはすごいと思いましたが、やっと穴を這い出して、とても楽しかったです.ハハハ~これから開発記録をたくさん書きます.出勤中はコードが自由だ
転載先:https://www.cnblogs.com/vilva/p/10830390.html
昨日、ウィジェット機能でウィジェットコードを取得しようとしたので、微信のドキュメントを見てたくさんの穴を這いました.(後ろに穴があいないように記録を残しておく)
操作
私は微信のところの画像のストリームを手に入れたので、ずっとどのように処理するか分からないので、今日やっと関連ドキュメントを見つけて、解決しました.データストリームがフロントエンドに直接伝わらないので、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