Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }