public void Send(object sender, MouseButtonEventArgs e) { long time = Time.Now(); string url = "http://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg" + "?sid=" + Data.wxsid + "&skey=" + Data.skey + "&pass_ticket=" + Data.pass_ticket + "&r=" + time; WebRequest request = WebRequest.Create(url); request.Method = "POST"; JObject jsonObj = new JObject(); jsonObj.Add("BaseRequest", JObject.FromObject(Data.baseRequest)); SendMsg msg = new SendMsg(); msg.FromUserName = Data.me.UserName; msg.ToUserName = user.UserName; msg.Type = 1; msg.Content = SendBox.Text.Replace("\r", ""); msg.ClientMsgId = time; msg.LocalID = time; SendBox.Clear(); jsonObj.Add("Msg", JObject.FromObject(msg)); byte[] byteArray = Encoding.UTF8.GetBytes(jsonObj.ToString().Replace("\r\n", "")); request.ContentType = "application/json; charset=UTF-8"; request.ContentLength = byteArray.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); WebResponse response = request.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string ret = reader.ReadToEnd(); webwxsendmsg wxsendmsg = JsonConvert.DeserializeObject <webwxsendmsg>(ret); reader.Close(); dataStream.Close(); response.Close(); Msg recvmsg = new Msg(); recvmsg.MsgId = wxsendmsg.MsgID; recvmsg.FromUserName = msg.FromUserName; recvmsg.ToUserName = msg.ToUserName; recvmsg.MsgType = msg.Type; recvmsg.Content = msg.Content; recvmsg.CreateTime = msg.LocalID; Trace.WriteLine("发送消息"); Trace.WriteLine(recvmsg.Content); Data.main.记录消息(recvmsg); }
public async void SendMessage(string contact, string message) { var u = from c in Data.Contactlist where (c.Value.NickName == contact || c.Value.DisplayName == contact || c.Value.Alias == contact) select c.Value; if (u.Count() == 0) { Trace.WriteLine(string.Format("发送消息失败!未找到群:{0}, 消息:{1}。", contact, message)); return; } string userKey = u.First().UserName; long time = Time.Now(); string url = string.Format(WeGlobal.WechatHost + "cgi-bin/mmwebwx-bin/webwxsendmsg?r={0}&pass_ticket={1}&sid={2}&skey={3}", time, Data.pass_ticket, Data.wxsid, Data.skey); WebRequest request = WebRequest.Create(url); //HttpWebRequest request = HttpWebRequest.CreateHttp(url); request.Method = "POST"; JObject jsonObj = new JObject(); jsonObj.Add("BaseRequest", JObject.FromObject(Data.baseRequest)); SendMsg msg = new SendMsg(); msg.FromUserName = Data.me.UserName; msg.ToUserName = userKey; msg.Type = 1; msg.Content = message.Replace("\r", ""); msg.ClientMsgId = time; msg.LocalID = time; jsonObj.Add("Msg", JObject.FromObject(msg)); byte[] byteArray = Encoding.UTF8.GetBytes(jsonObj.ToString().Replace("\r\n", "")); request.ContentType = "application/json; charset=UTF-8"; request.ContentLength = byteArray.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); Trace.WriteLine("发送消息..."); Trace.WriteLine(jsonObj.ToString().Replace("\r\n", "")); WebResponse response = await request.GetResponseAsync(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string ret = reader.ReadToEnd(); webwxsendmsg wxsendmsg = JsonConvert.DeserializeObject <webwxsendmsg>(ret); reader.Close(); dataStream.Close(); response.Close(); //如果发送失败,调用同步消息获取最新synckey, 再重发一次? if (wxsendmsg.MsgID == null) { this.步消息(); response = request.GetResponse(); dataStream = response.GetResponseStream(); reader = new StreamReader(dataStream); ret = reader.ReadToEnd(); wxsendmsg = JsonConvert.DeserializeObject <webwxsendmsg>(ret); reader.Close(); dataStream.Close(); response.Close(); } Trace.WriteLine(string.Format("发送消息成功!发送到:{0}, 消息:{1}。", contact, message)); }