Пример #1
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="type"></param>
        public void SendMsg(string msg, string from, string to, int type, string Uin, string Sid)
        {
            string msg_json = "{{" +
                              "\"BaseRequest\":{{" +
                              "\"DeviceID\" : \"e441551176\"," +
                              "\"Sid\" : \"{0}\"," +
                              "\"Skey\" : \"{6}\"," +
                              "\"Uin\" : \"{1}\"" +
                              "}}," +
                              "\"Msg\" : {{" +
                              "\"ClientMsgId\" : {8}," +
                              "\"Content\" : \"{2}\"," +
                              "\"FromUserName\" : \"{3}\"," +
                              "\"LocalID\" : {9}," +
                              "\"ToUserName\" : \"{4}\"," +
                              "\"Type\" : {5}" +
                              "}}," +
                              "\"rr\" : {7}" +
                              "}}";
            var entity = LoginCore.GetPassTicket(Uin);

            if (Sid != null && Uin != null)
            {
                msg_json = string.Format(msg_json, Sid, Uin, msg, from, to, type, entity.SKey, DateTime.Now.Millisecond, DateTime.Now.Millisecond, DateTime.Now.Millisecond);
                byte[] bytes       = HttpService.SendPostRequest(Constant._sendmsg_url + Sid + "&lang=zh_CN&pass_ticket=" + entity.PassTicket, msg_json, Uin);
                string send_result = Encoding.UTF8.GetString(bytes);
            }
            //((Action)delegate()
            //{
            //    //存储发送消息
            //    var b = WxOperateLogDal.AddWxsendmsglog(Uin, from, msg,to,from);
            //}).BeginInvoke(null, null);
        }
Пример #2
0
 /// <summary>
 /// 点击发送
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 ///
 private void SendContent_Click(object sender, EventArgs e)
 {
     try
     //if (rSendContent.Text != null && _friendUser != null && _meUser != null)
     {
         if (rSendContent.Text.Trim() == "") //Trim()是去除空格
         {
             MessageBox.Show("(*^__^*) 嘻嘻……\n不能发空消息", "提 示");
         }
         else
         {
             WXMsg msg = new WXMsg();
             msg.Uin    = _meUser.uin;
             msg.Sid    = LoginCore.GetPassTicket(_meUser.uin).WxSid;
             msg.From   = _meUser.UserName;
             msg.Msg    = rSendContent.Text;
             msg.Readed = false;
             msg.To     = _friendUser.UserName;
             msg.Type   = 1;
             msg.Time   = DateTime.Now;
             _friendUser.SendMsg(msg, false);
             rSendContent.Clear();
             rSendContent.Focus();
         }
     }
     catch
     {
         return;
     }
 }
Пример #3
0
        /// <summary>
        /// 发送表情
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="type"></param>
        public void SendEmoticon(string EMoticonMd5, string from, string to, int type)
        {
            string msg_json = "{{" +
                              "\"BaseRequest\":{{" +
                              "\"DeviceID\" : \"{0}\"," +
                              "\"Sid\" : \"{1}\"," +
                              "\"Skey\" : \"{2}\"," +
                              "\"Uin\" : \"{3}\"" +
                              "}}," +
                              "\"Msg\" : {{" +
                              "\"ClientMsgId\" : {4}," +
                              "\"EMoticonMd5\" : \"{5}\"," +
                              "\"FromUserName\" : \"{6}\"," +
                              "\"LocalID\" : {7}," +
                              "\"ToUserName\" : \"{8}\"," +
                              "\"Type\" : {9}" +
                              "}}," +
                              "\"rr\" : {10}" +
                              "}}";
            var entity = LoginCore.GetPassTicket(Uin);

            if (Sid != null && Uin != null)
            {
                //((long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds) * 10000
                msg_json = string.Format(msg_json, DeviceID, Sid, entity.SKey, Uin, DateTime.Now.Millisecond, EMoticonMd5, from, DateTime.Now.Millisecond, to, type, DateTime.Now.Millisecond);
                byte[] bytes       = HttpService.SendPostRequest(BaseUrl + Constant._webwxsendemoticon_url + "&pass_ticket=" + entity.PassTicket, msg_json, Uin);
                string send_result = Encoding.UTF8.GetString(bytes);
                var    aa          = send_result;
            }
            //((Action)delegate()
            //{
            //    //存储发送消息
            //    var b = WxOperateLogDal.AddWxsendmsglog(Uin, from, msg,to,from);
            //}).BeginInvoke(null, null);
        }
Пример #4
0
        public WxContact(string uin)
        {
            _uin = uin;
            var entity = LoginCore.GetPassTicket(this._uin);

            if (entity != null)
            {
                wx.Sid = entity.WxSid;
                wx.Uin = this._uin;
            }
        }
Пример #5
0
        public WxContact(string uin)
        {
            _uin = uin;
            var entity = LoginCore.GetPassTicket(_uin);

            if (entity != null)
            {
                wxs.Sid = entity.WxSid;
                wxs.Uin = this._uin;
                // wx.DeviceID= "e" + GenerateCheckCode(15);
                wxs.BaseUrl = "https://" + LoginCore.GetPassTicket(wxs.Uin).WxHost;
            }
        }
Пример #6
0
        public string WxSyncCheck()
        {
            string sync_key = "";

            try
            {
                var _syncKey = LoginCore.GetSyncKey(Uin);
                foreach (KeyValuePair <string, string> p in _syncKey)
                {
                    sync_key += p.Key + "_" + p.Value + "%7C";
                }
                sync_key = sync_key.TrimEnd('%', '7', 'C');

                var entity = LoginCore.GetPassTicket(Uin);
                if (Sid != null && Uin != null)
                {
                    var _synccheck_url = string.Format(PushUrl + Constant._synccheck_url, Sid, Uin, sync_key, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey.Replace("@", "%40"), DeviceID);

                    byte[] bytes = HttpService.SendGetRequest(_synccheck_url + "&_=" + DateTime.Now.Ticks, Uin);

                    if (bytes != null)
                    {
                        //string contact_str = Encoding.UTF8.GetString(bytes);
                        return(Encoding.UTF8.GetString(bytes));
                        //string retcode = contact_str.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[1];
                        //string selector = contact_str.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[3];
                        //string[]rs= { retcode, selector };
                        //return contact_str;
                        //return new string[]{ retcode, selector };
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("WxSyncCheck" + ex.Message);
                Tools.Tools.WriteLog(ex.ToString());
                return("");
                //return null;
            }
        }
Пример #7
0
        void shisan13ListView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            TabPage tab = new TabPage();

            tab.Name = WechartListView.SelectedItems[0].SubItems[0].Text;
            tab.Text = WechartListView.SelectedItems[0].SubItems[2].Text + "--云客服";//获取登录列表为微信
            Wx_wechart form = new Wx_wechart();

            form.Uin      = WechartListView.SelectedItems[0].SubItems[0].Text;
            form.Sid      = LoginCore.GetPassTicket(WechartListView.SelectedItems[0].SubItems[0].Text).WxSid;
            form.robotID  = "013";
            form.TopLevel = false;      //设置为非顶级控件
            tab.Controls.Add(form);
            WXMaintab.Controls.Add(tab);
            form.Show();
        }
Пример #8
0
        /// <summary>
        /// 微信初始化
        /// </summary>
        /// <returns></returns>
        public JObject WxInit()
        {
            string init_json = "{{\"BaseRequest\":{{\"Uin\":\"{0}\",\"Sid\":\"{1}\",\"Skey\":\"{2}\",\"DeviceID\":\"e1615250492\"}}}}";

            if (Uin != null && Sid != null)
            {
                string pass_ticket = LoginCore.GetPassTicket(Uin).PassTicket;//这个位置过来了
                string skey        = LoginCore.GetPassTicket(Uin).SKey;
                init_json = string.Format(init_json, Uin, Sid, skey);
                byte[]  bytes       = HttpService.SendPostRequest(Constant._init_url + "&pass_ticket=" + pass_ticket, init_json, Uin);
                string  init_str    = Encoding.UTF8.GetString(bytes);
                JObject init_result = JsonConvert.DeserializeObject(init_str) as JObject;
                return(init_result);
            }
            else
            {
                return(null);
            }
        }
Пример #9
0
        private void UpLoad_Click(object sender, RoutedEventArgs e)
        {
            string    sid  = LoginCore.GetPassTicket(uin).WxSid;
            string    host = LoginCore.GetPassTicket(uin).WxHost;
            WXService wxs  = new WXService
            {
                Uin       = uin,
                Sid       = sid,
                DeviceID  = "e" + LoginCore.GenerateCheckCode(15),
                BaseUrl   = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                PushUrl   = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
            };
            string FileName = "1.jpg";
            string FilePath = "c:\\1.jpg"; //文件的绝对路径
            //string FilePath = Environment.CurrentDirectory + FileName; //文件的绝对路径
            var ClientMediaId = wxs.UploadMedia(wxs.UploadUrl + Constant._uploadmedia_url, FilePath, FileName, sid, wxs.DeviceID, forwardUser, "filehelper");

            wxs.SendMsgImg("", ClientMediaId, forwardUser, "filehelper", 3);
            Core.Constant.WU_FILE_N += 1;
        }
Пример #10
0
        /// <summary>
        /// 微信同步
        /// </summary>
        /// <returns></returns>
        public JObject WxSync()
        {
            var    entity    = LoginCore.GetPassTicket(Uin);
            string sync_json = "{{\"BaseRequest\" : {{\"DeviceID\":\"{6}\",\"Sid\":\"{1}\", \"Skey\":\"{5}\", \"Uin\":\"{0}\"}},\"SyncKey\" : {{\"Count\":{2},\"List\": [{3}]}},\"rr\" :{4}}}";
            string sync_keys = "";
            var    _syncKey  = LoginCore.GetSyncKey(Uin);

            foreach (KeyValuePair <string, string> p in _syncKey)
            {
                sync_keys += "{\"Key\":" + p.Key + ",\"Val\":" + p.Value + "},";
            }
            sync_keys = sync_keys.TrimEnd(',');
            sync_json = string.Format(sync_json, this.Uin, this.Sid, _syncKey.Count, sync_keys, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey, DeviceID);

            if (this.Sid != null && this.Uin != null)
            {
                byte[] bytes    = HttpService.SendPostRequest(BaseUrl + Constant._sync_url + this.Sid + "&lang=zh_CN&skey=" + entity.SKey + "&pass_ticket=" + entity.PassTicket, sync_json, this.Uin);
                string sync_str = Encoding.UTF8.GetString(bytes);
                if (sync_str == null)
                {
                    return(null);
                }
                JObject sync_resul = JsonConvert.DeserializeObject(sync_str) as JObject;
                // Dictionary<string, string> ss = new Dictionary<string, string>();
                if (sync_resul["SyncKey"]["Count"].ToString() != "1")
                {
                    _syncKey.Clear();
                    foreach (JObject key in sync_resul["SyncKey"]["List"])
                    {
                        _syncKey.Add(key["Key"].ToString(), key["Val"].ToString());
                    }
                }

                return(sync_resul);
            }
            else
            {
                return(null);
            }
        }
Пример #11
0
        public JObject BatGetContact(List <string> groupUserName)
        {
            var entity = LoginCore.GetPassTicket(Uin);
            var _jstr  = string.Empty;

            foreach (var username in groupUserName)
            {
                _jstr += string.Format("{{{{\"UserName\":\"{0}\",\"ChatRoomId\":\"\"}}}},",
                                       username, "");
            }
            string json = "{{" +
                          "\"BaseRequest\":{{\"Uin\":{0}," +
                          "\"Sid\":\"{1}\"," +
                          "\"Skey\":\"{2}\"," +
                          "\"DeviceID\":\"{4}\"}}," +
                          "\"Count\":{3}," +
                          "\"List\":[" +
                          _jstr.TrimEnd(',') +
                          "]" +
                          "}}";

            try
            {
                json = string.Format(json, Uin, Sid, entity.SKey, groupUserName.Count, DeviceID);
            }
            catch (Exception ex)
            {
                //MessageBox.Show("BatGetContact" + ex.Message);
                Tools.Tools.WriteLog(ex.ToString());
                //写日志
            }

            string url = string.Format(BaseUrl + Constant._getbatcontact_url, HttpService.GetTimeStamp(), entity.PassTicket);

            byte[] bytes       = HttpService.SendPostRequest(url, json, Uin);
            string contact_str = Encoding.UTF8.GetString(bytes);

            return(JsonConvert.DeserializeObject(contact_str) as JObject);
        }
Пример #12
0
        /// <summary>
        /// 微信同步检测
        /// </summary>
        /// <returns></returns>
        public string WxSyncCheck()
        {
            string sync_key = "";

            try
            {
                var _syncKey = LoginCore.GetSyncKey(Uin);
                foreach (KeyValuePair <string, string> p in _syncKey)
                {
                    sync_key += p.Key + "_" + p.Value + "%7C";
                }
                sync_key = sync_key.TrimEnd('%', '7', 'C');

                var entity = LoginCore.GetPassTicket(Uin);
                if (Sid != null && Uin != null)
                {
                    var _synccheck_url = string.Format(Constant._synccheck_url, Sid, Uin, sync_key, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey.Replace("@", "%40"), "e1615250492");

                    byte[] bytes = HttpService.SendGetRequest(_synccheck_url + "&_=" + DateTime.Now.Ticks, Uin);
                    if (bytes != null)
                    {
                        return(Encoding.UTF8.GetString(bytes));
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return("");
            }
        }
Пример #13
0
        public void DoLogic()
        {
            sCB.IsEnabled   = false;
            smCB.IsEnabled  = false;
            overTimeTB.Text = "授权时间截止至 [ " + Core.Constant.overtime + " ]";
            //dLV.IsEnabled = false;
            uin = Core.Constant.Uin;
            List <Object> _contact_all = new List <object>();


            ((Action)(delegate()
            {
                LoginCore.InitCookie(uin);
                string sid = LoginCore.GetPassTicket(uin).WxSid;
                string host = LoginCore.GetPassTicket(uin).WxHost;
                WXService wxs = new WXService
                {
                    Uin = uin,
                    Sid = sid,
                    DeviceID = "e" + LoginCore.GenerateCheckCode(15),
                    BaseUrl = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                    PushUrl = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                    UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
                };
                JObject init_result = wxs.WxInit();  //初始化
                var partUsers = new List <WXUser>();
                if (init_result != null)
                {
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "加载个人信息...";
                    }));
                    var _me = new WXUser
                    {
                        uin = wxs.Uin,
                        UserName = init_result["User"]["UserName"].ToString(),
                        City = "",
                        HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(),
                        NickName = init_result["User"]["NickName"].ToString(),
                        Province = "",
                        PYQuanPin = init_result["User"]["PYQuanPin"].ToString(),
                        RemarkName = init_result["User"]["RemarkName"].ToString(),
                        RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(),
                        Sex = init_result["User"]["Sex"].ToString(),
                        Signature = init_result["User"]["Signature"].ToString(),
                    };
                    forwardUser = _me.UserName;
                    partUsers.Add(_me);
                    this.Dispatcher.BeginInvoke((Action)(delegate()   //等待结束
                    {
                        //var aa = wxs.BaseUrl + _me.HeadImgUrl;
                        //headImage.Source = new BitmapImage(new Uri(aa));
                        headImage.Source = BitmapFrame.Create(wxs.GetIcon(_me.UserName, uin), BitmapCreateOptions.None, BitmapCacheOption.Default);
                    }));
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "加载最近联系人...";
                    }));
                    foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                    {
                        WXUser user = new WXUser();
                        user.uin = wxs.Uin;
                        user.UserName = contact["UserName"].ToString();
                        user.City = contact["City"].ToString();
                        user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                        user.NickName = contact["NickName"].ToString();
                        user.Province = contact["Province"].ToString();
                        user.PYQuanPin = contact["PYQuanPin"].ToString();
                        user.RemarkName = contact["RemarkName"].ToString();
                        user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                        user.Sex = contact["Sex"].ToString();
                        user.Signature = contact["Signature"].ToString();
                        partUsers.Add(user);
                    }


                    var _syncKey = new Dictionary <string, string>();
                    foreach (JObject synckey in init_result["SyncKey"]["List"])  //同步键值
                    {
                        _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
                    }
                    //保存最新key
                    LoginCore.SyncKey(uin, _syncKey);
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "初始化联系人...";
                    }));
                    WxContact _contact = new WxContact(uin); //记住此处不适合再开线程
                    _contact.InitContact(partUsers);         //初始联系人

                    Dictionary <string, string> Groups = new Dictionary <string, string>();
                    foreach (var g in _contact.GetGroupUserNames())
                    {
                        Groups.Add(g, _contact.GetGroupMemberNames(g).NickName);
                    }
                    this.Dispatcher.BeginInvoke((Action)(delegate()   //等待结束
                    {
                        sCB.ItemsSource = Groups;
                        sCB.DisplayMemberPath = "Value";
                        sCB.SelectedValuePath = "Key";
                        smCB.DisplayMemberPath = "Value";
                        smCB.SelectedValuePath = "Key";
                        supLB.Content = "进入监听模式...";
                        sCB.IsEnabled = true;
                        smCB.IsEnabled = true;
                        //dLV.IsEnabled = true;
                    }));
                    string sync_flag = null;
                    JObject sync_result;
                    sync_flag = wxs.WxSyncCheck();  //同步检查
                    DateTime lastCheckTs = DateTime.Now;
                    while (true)
                    {
                        if (sync_flag != null)
                        {
                            var retcode = sync_flag.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[1];
                            var selector = sync_flag.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[3];
                            //this.Dispatcher.BeginInvoke((Action)(delegate ()
                            //{
                            //supLB.Content = "{retcode:" + retcode + " selector:" + selector + "}";

                            //}));
                            if (retcode == "1100")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.Red;
                                }));
                                MessageBox.Show("你在手机上登出了微信,债见");
                                break;
                            }
                            if (retcode == "1101")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.Red;
                                }));
                                MessageBox.Show("你在其他地方登录了 WEB 版微信,债见");
                                break;
                            }
                            else if (retcode == "0")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.GreenYellow;
                                }));
                                if (selector == "2")
                                {
                                    sync_result = wxs.WxSync();  //进行同步
                                    lastCheckTs = DateTime.Now;
                                    if (sync_result != null)
                                    {
                                        handleMsg(sync_result);
                                    }
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //supLB.Content = "";
                                    //}));
                                }
                                else if (selector == "0")
                                {
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //supLB.Content = "";
                                    //}));

                                    Thread.Sleep(500);
                                }
                                else
                                {
                                    sync_result = wxs.WxSync();  //进行同步
                                    this.Dispatcher.BeginInvoke((Action)(delegate()
                                    {
                                        supLB.Content = "最后同步:{retcode:" + retcode + " selector:" + selector + "}";
                                    }));
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //chatText.AppendText("\n" + selector + "\n-------" + sync_result.ToString() + "-------\n");
                                    //}));
                                }
                            }
                            sync_flag = null;
                            this.Dispatcher.BeginInvoke((Action)(delegate()
                            {
                                headBorder.BorderBrush = Brushes.Blue;
                            }));
                        }

                        if ((DateTime.Now - lastCheckTs).Seconds < 23)
                        {
                            var sleep = (DateTime.Now - lastCheckTs).Seconds;

                            Thread.Sleep(1000);

                            sync_flag = wxs.WxSyncCheck();  //同步检查
                        }
                        else
                        {
                            sync_flag = wxs.WxSyncCheck();
                            lastCheckTs = DateTime.Now;
                        }
                        this.Dispatcher.BeginInvoke((Action)(delegate()
                        {
                            sleepTB.Text = ((DateTime.Now - lastCheckTs).Seconds).ToString();
                            supLB.Content = "最后同步:" + DateTime.Now.ToLongTimeString().ToString();
                        }));
                    }
                }
            })).BeginInvoke(null, null);
        }
Пример #14
0
        private void handleMsg(JObject sync_result)
        {
            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
            {
                WXService wxs = new WXService
                {
                    Uin       = uin,
                    Sid       = LoginCore.GetPassTicket(uin).WxSid,
                    DeviceID  = "e" + LoginCore.GenerateCheckCode(15),
                    BaseUrl   = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                    PushUrl   = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                    UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
                };
                foreach (JObject m in sync_result["AddMsgList"])
                {
                    string from    = m["FromUserName"].ToString();
                    string to      = m["ToUserName"].ToString();
                    string content = m["Content"].ToString();
                    string MsgId   = m["MsgId"].ToString();
                    string type    = m["MsgType"].ToString();//语音视频标识
                    if (type == "1")
                    {
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            //wxs.SendMsg(content, from, to, 1, uin, sid);
                            //MessageBox.Show(content);
                            //chatText.AppendText("[" + type + "]" + from + "->" + to + " : " + content + "\n");
                            //chatText.AppendText("[" + type + "]:" + content + "\n");
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        var aa = sCB.SelectedValue.ToString();
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            wxs.SendMsg(sArray[1], forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":" + sArray[1];
                                        }

                                        /*
                                         * if (sArray[0] == smCB.SelectedValue.ToString())
                                         *  foreach (var g in dGroup)
                                         *  {
                                         *      wxs.SendMsg(sArray[1], forwardUser, g, int.Parse(type));
                                         *      //Thread.Sleep(100);
                                         *  }
                                         */
                                    }
                                }
                                //chatText.AppendText("[" + msg.Type + "]" + wxc.GetNickName(from) + "->" + wxc.GetNickName(to) + " : " + content + "\n");
                                //chatText.PageDown();
                                //chatText.AppendText("\nmsg:                 "+sync_result["AddMsgList"].ToString());
                                //debugTextBox.AppendText(m.ToString());
                            }
                        }));
                    }
                    else if (type == "3")//图片
                    {
                        string sFilePath = Environment.CurrentDirectory + "\\IMG";
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            wxs.SendMsgImg("", sArray[1], forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":转发了图片";
                                        }

                                        /*
                                         * foreach (var g in dGroup)
                                         * {
                                         *    //wxs.SendMsgImg(ClientMediaId, forwardUser, g, int.Parse(type), uin, sid);
                                         *    wxs.SendMsgImg("", sArray[1], forwardUser, g, int.Parse(type));
                                         *    //Thread.Sleep(300);
                                         * }
                                         */
                                    }
                                }
                                //chatText.AppendText("[" + msg.Type + "]" + wxc.GetNickName(from) + "->" + wxc.GetNickName(to) + " : " + content + "\n");
                                //chatText.PageDown();
                                //chatText.AppendText("\nmsg:                 "+sync_result["AddMsgList"].ToString());
                                //debugTextBox.AppendText(m.ToString());
                            }
                        }));
                    }
                    else if (type == "47")//动态表情
                    {
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    //chatText.AppendText("[" + type + "]" + from + "->" + to + " : " + content + "\n");

                                    var aa = sCB.SelectedValue.ToString();
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            Regex reg = new Regex(@"md5=.(.*).\slen");
                                            Match match = reg.Match(sArray[1]);
                                            var aaa = match.Groups[1].Value;
                                            var bb = forwardUser;
                                            wxs.SendEmoticon(match.Groups[1].Value, forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":转发了表情";
                                        }

                                        /*
                                         *  foreach (var g in dGroup)
                                         *  {
                                         *      Regex reg = new Regex(@"md5=.(.*).\slen");
                                         *      Match match = reg.Match(sArray[1]);
                                         *      var aaa = match.Groups[1].Value;
                                         *      var bb = forwardUser;
                                         *      wxs.SendEmoticon(match.Groups[1].Value, forwardUser, g, int.Parse(type));
                                         *      //Thread.Sleep(100);
                                         *  }
                                         */
                                    }
                                }
                            }
                        }));
                    }
                    else
                    {
                        //this.Dispatcher.BeginInvoke((Action)(delegate ()
                        //{
                        //supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":消息同步中";

                        //}));
                    }
                }
            }

            /*
             * else
             * {
             *  var _syncKey = new Dictionary<string, string>();
             *  foreach (JObject synckey in sync_result["SyncKey"]["List"])  //同步键值
             *  {
             *      _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
             *  }
             *  //保存最新key
             *  LoginCore.SyncKey(uin, _syncKey);
             * }
             */
        }
Пример #15
0
        public void AddToList(string uin)
        {
            ((Action)(delegate()
            {
                string sid = LoginCore.GetPassTicket(uin).WxSid;
                string WXUser_url = LoginCore.GetPassTicket(uin).WXUser_url;//传值不同域名不同的
                WXService wx = new WXService();
                wx.Uin = uin;
                wx.Sid = sid;
                JObject init_result = wx.WxInit();
                var partUsers = new List <WXUser>();
                foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                {
                    WXUser user = new WXUser();
                    //传值uin sin
                    user.uin = uin;
                    user.UserName = contact["UserName"].ToString();
                    user.City = contact["City"].ToString();
                    user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                    user.NickName = contact["NickName"].ToString();
                    user.Province = contact["Province"].ToString();
                    user.PYQuanPin = contact["PYQuanPin"].ToString();
                    user.RemarkName = contact["RemarkName"].ToString();
                    user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                    user.Sex = contact["Sex"].ToString();
                    user.Signature = contact["Signature"].ToString();
                    partUsers.Add(user);
                }

                var _me = new WXUser();
                if (init_result != null)
                {
                    _me.UserName = init_result["User"]["UserName"].ToString();
                    _me.City = "";
                    _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                    _me.NickName = init_result["User"]["NickName"].ToString();
                    _me.Province = "";
                    _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString();
                    _me.RemarkName = init_result["User"]["RemarkName"].ToString();
                    _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString();
                    _me.Sex = init_result["User"]["Sex"].ToString();
                    _me.Signature = init_result["User"]["Signature"].ToString();
                    Tools.WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");

                    if (string.IsNullOrEmpty(_me.NickName))
                    {
                        WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");
                        Tools.WriteLog("【警告】" + uin + "不能在此软件运行,请切换版本或重新扫描登陆");
                        return;
                    }

                    var _syncKey = new Dictionary <string, string>();

                    foreach (JObject synckey in init_result["SyncKey"]["List"])  //同步键值
                    {
                        _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
                    }
                    //保存最新key
                    LoginCore.AddSyncKey(uin, _syncKey);
                    //更新数据库
                    var table = WeChatRobotDal.GetWxRobot(_me.NickName);
                    if (table.Rows.Count == 0)
                    {
                        WriteLog("【警告】" + _me.NickName + "没有加入系统中");
                        return;
                    }
                    partUsers.Add(_me);
                    WxContact _contact = new WxContact(uin); //记住此处不适合再开线程
                    _contact.InitContact(partUsers);         //初始联系人

                    WeChatRobotDal.UpdateUin(_me.NickName, uin);

                    #region 加入listview
                    if (!_dic.ContainsKey(uin))
                    {
                        this.BeginInvoke((Action) delegate()
                        {
                            this.WechartListView.BeginUpdate();
                            //把扫描好的微信加入到列表中
                            ListViewItem item = new ListViewItem();
                            item.Text = uin;
                            item.SubItems.Add(_me.UserName);
                            item.SubItems.Add(_me.ShowName);
                            item.SubItems.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            item.SubItems.Add("0");
                            item.SubItems.Add(table.Rows[0]["EndDate"].ToString());
                            this.WechartListView.Items.Add(item);
                            this.WechartListView.EndUpdate();
                            //设置下高度
                            ImageList image = new ImageList();
                            image.ImageSize = new Size(10, 50);//这边设置宽和高
                            this.WechartListView.SmallImageList = image;
                            //隐藏以下按钮
                            //this.WechartListView.Columns[1].Width = 0;
                            //this.WechartListView.Columns[0].Width = 0;
                            //this.WechartListView.Columns[4].Width = 0;
                            //this.WechartListView.Columns[5].Width = 0;
                        });
                        _dic.Add(uin, uin);
                        //#region 开始任务
                        //var robotID = table.Rows[0]["RobotId"].ToString();
                        //WxTaskCore wt = new WxTaskCore(sid, uin, robotID);
                        //wt.user = _me;
                        ////接收消息事件
                        //wt.OnRevice += new WxTaskCore.Revice(wt_OnRevice);
                        ////接收修改联系人消息
                        //wt.OnModifyContact += new WxTaskCore.ModifyContact(wt_OnModifyContact);
                        ////通知发送信息
                        //wt.OnNotifySend += new WxTaskCore.NotifySend(wt_OnNotifySend);
                        ////每一个微信号,开启一个线程
                        //ThreadStart start = new ThreadStart(wt.ReviceMsg);
                        //new Thread(start).Start();
                        ////启动发送线程
                        //new Thread(new ThreadStart(wt.AutoSendMsg)).Start();
                        //#endregion
                    }
                    #endregion
                }
                if (!Uins.Contains(uin))
                {
                    Uins.Add(uin);
                }
                LoginCore.AddOnLineUin(Uins);
                UpDataFromData();
            })).BeginInvoke(null, null);
        }
Пример #16
0
        /// <summary>
        ///
        /// </summary>
        private void DoMainLogic()
        {
            _lblWait.BringToFront();
            ((Action)(delegate()
            {
                Dictionary <string, string> ss = new Dictionary <string, string>();
                //先判断下键值是否存在要不卡死头像只能显示一个用户的
                //if (!ss.ContainsKey("1"))
                //{
                //    ss.Add("1", "1");
                //}
                string sid = LoginCore.GetPassTicket(Uin).WxSid;
                WXService wxs = new WXService();
                wxs.Uin = Uin;
                wxs.Sid = sid;
                wxs.robotID = robotID;
                JObject init_result = wxs.WxInit();  //初始化
                List <object> contact_all = new List <object>();
                if (init_result != null)
                {
                    _me = new WXUser();
                    _me.uin = wxs.Uin;
                    _me.UserName = init_result["User"]["UserName"].ToString();
                    _me.City = "";
                    _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                    _me.NickName = init_result["User"]["NickName"].ToString();
                    _me.Province = "";
                    _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString();
                    _me.RemarkName = init_result["User"]["RemarkName"].ToString();
                    _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString();
                    _me.Sex = init_result["User"]["Sex"].ToString();
                    _me.Signature = init_result["User"]["Signature"].ToString();
                    foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                    {
                        WXUser user = new WXUser();
                        user.uin = wxs.Uin;
                        user.UserName = contact["UserName"].ToString();
                        user.City = contact["City"].ToString();
                        user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                        user.NickName = contact["NickName"].ToString();
                        user.Province = contact["Province"].ToString();
                        user.PYQuanPin = contact["PYQuanPin"].ToString();
                        user.RemarkName = contact["RemarkName"].ToString();
                        user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                        user.Sex = contact["Sex"].ToString();
                        user.Signature = contact["Signature"].ToString();
                        _contact_latest.Add(user);
                    }
                }
                JObject contact_result = wxs.GetContact(); //通讯录
                if (contact_result != null)
                {
                    foreach (JObject contact in contact_result["MemberList"])  //完整好友名单
                    {
                        WXUser user = new WXUser();
                        user.uin = wxs.Uin;
                        user.UserName = contact["UserName"].ToString();
                        user.City = contact["City"].ToString();
                        user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                        user.NickName = contact["NickName"].ToString();
                        user.Province = contact["Province"].ToString();
                        user.PYQuanPin = contact["PYQuanPin"].ToString();
                        user.RemarkName = contact["RemarkName"].ToString();
                        user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                        user.Sex = contact["Sex"].ToString();
                        user.Signature = contact["Signature"].ToString();
                        contact_all.Add(user);
                        //((Action)delegate()
                        //{
                        //    //写入所有好友信息
                        //    var b = WxOperateLogDal.AddchartLog(wxs.Uin, contact["UserName"].ToString(), contact["City"].ToString(), contact["HeadImgUrl"].ToString(), contact["NickName"].ToString(), contact["Province"].ToString(), contact["PYQuanPin"].ToString(), contact["RemarkName"].ToString(), contact["RemarkPYQuanPin"].ToString(), contact["Sex"].ToString(), contact["Signature"].ToString());
                        //}).BeginInvoke(null, null);
                        wChatList1.Invalidate();
                    }
                }
                IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin);

                WXUser wx; string start_char;
                foreach (object o in list_all)
                {
                    wx = o as WXUser;
                    start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1);
                    if (!_contact_all.Contains(start_char.ToUpper()))
                    {
                        _contact_all.Add(start_char.ToUpper());
                    }
                    _contact_all.Add(o);
                }

                this.BeginInvoke((Action)(delegate()   //等待结束
                {
                    _lblWait.Visible = false;
                    wChatList1.Items.AddRange(_contact_latest.ToArray());  //近期联系人
                    wFriendsList1.Items.AddRange(_contact_all.ToArray());  //通讯录
                    wpersonalinfo.FriendUser = _me;
                }));
                string sync_flag = "";
                JObject sync_result;
                while (true)
                {
                    sync_flag = wxs.WxSyncCheck();  //同步检查
                    if (sync_flag == null)
                    {
                        continue;
                    }
                    //这里应该判断 sync_flag中selector的值
                    else //有消息
                    {
                        sync_result = wxs.WxSync();  //进行同步
                        if (sync_result != null)
                        {
                            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
                            {
                                foreach (JObject m in sync_result["AddMsgList"])
                                {
                                    string from = m["FromUserName"].ToString();
                                    string to = m["ToUserName"].ToString();
                                    string content = m["Content"].ToString();
                                    string MsgId = m["MsgId"].ToString();
                                    string type = m["MsgType"].ToString();//语音视频标识
                                    WXMsg msg = new WXMsg();
                                    msg.From = from;
                                    wxs.Uin = Uin;
                                    wxs.Sid = sid;
                                    msg.Sid = wxs.Sid;
                                    msg.Uin = wxs.Uin;
                                    msg.Msg = type == "1" ? content : "收到一个系统数据"; //只接受文本消息
                                    if (msg.Type == 1)                            //屏蔽一些系统数据
                                    {
                                        msg.Msg = content;
                                    }
                                    msg.Readed = false;
                                    msg.Time = DateTime.Now;
                                    msg.To = to;
                                    msg.Type = int.Parse(type);
                                    //if (msg.Type == 51)  //屏蔽一些系统数据
                                    //{
                                    //    msg.Msg = "收到一个系统数据";
                                    //}
                                    if (msg.Type == 10000)//进群退群消息
                                    {
                                        string s = sync_result.ToString();
                                    }
                                    if (msg.Type == 3)//图片
                                    {
                                        msg.Msg = content + "收到一个图片";
                                        string sFilePath = Environment.CurrentDirectory + "\\IMG";
                                        string sFileName = MsgId + ".jpg";
                                        sFileName = sFilePath + "\\" + sFileName; //文件的绝对路径
                                        HttpService.HttpDownloadFile(Constant._getmsgimg_url + MsgId, msg.Uin, sFileName);
                                    }

                                    if (msg.Type == 34)//语音
                                    {
                                        msg.Msg = "收到语音点击查看";
                                        //Button newButton = new Button();//创建一个名为newButton的新按钮
                                        //newButton.Width = 150;
                                        //newButton.Text = "NewButton";
                                        //newButton.BackColor = Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
                                        //newButton.Click += new EventHandler(textBox1_Click);
                                        string sFilePath = Environment.CurrentDirectory + "\\MP3";
                                        string sFileName = MsgId + ".wav";
                                        sFileName = sFilePath + "\\" + sFileName; //文件的绝对路径
                                        HttpService.HttpDownloadFile(Constant._getmsgmp3_url + MsgId, msg.Uin, sFileName);
                                    }
                                    if (msg.Type == 43)//小视频
                                    {
                                        msg.Msg = "收到小视频" + "点击查看";
                                        string sFilePath = Environment.CurrentDirectory + "\\MP4";
                                        string sFileName = MsgId + ".MP4";
                                        sFileName = sFilePath + "\\" + sFileName;
                                        HttpService.HttpDownloadFile(Constant._getmsgvideo_url + MsgId, msg.Uin, sFileName);
                                    }
                                    if (msg.Type == 62)//视频
                                    {
                                        msg.Msg = content + "收到一个视频";
                                    }
                                    if (msg.Type == 10002)//消息撤回
                                    {
                                        msg.Msg = content + "对方撤回了消息";
                                    }
                                    if (msg.Type == 42)//好友名片
                                    {
                                        msg.Msg = content + "收到一个好友名片";
                                    }
                                    if (msg.Type == 47)//动态表情
                                    {
                                        msg.Msg = content + "收到一个动态表情";
                                    }
                                    if (msg.Type == 48)//位置消息
                                    {
                                        msg.Msg = content + "收到一个位置消息";
                                    }
                                    if (msg.Type == 49)//分享链接
                                    {
                                        msg.Msg = content + "收到一个分享链接";
                                    }
                                    BeginInvoke((Action) delegate()
                                    {
                                        WXUser user; bool exist_latest_contact = false;
                                        foreach (object u in wChatList1.Items)
                                        {
                                            user = u as WXUser;

                                            if (user != null)
                                            {
                                                if (user.UserName == msg.From && msg.To == _me.UserName)  //接收别人消息
                                                {
                                                    wChatList1.Items.Remove(user);
                                                    wChatList1.Items.Insert(0, user);
                                                    exist_latest_contact = true;
                                                    user.ReceiveMsg(msg);
                                                    break;
                                                }
                                                else if (user.UserName == msg.To && msg.From == _me.UserName)  //同步自己在其他设备上发送的消息
                                                {
                                                    wChatList1.Items.Remove(user);
                                                    wChatList1.Items.Insert(0, user);
                                                    exist_latest_contact = true;
                                                    user.SendMsg(msg, true);
                                                    break;
                                                }
                                            }
                                        }
                                        if (!exist_latest_contact)
                                        {
                                            foreach (object o in wFriendsList1.Items)
                                            {
                                                WXUser friend = o as WXUser;
                                                if (friend != null && friend.UserName == msg.From && msg.To == _me.UserName)
                                                {
                                                    wChatList1.Items.Insert(0, friend);
                                                    friend.ReceiveMsg(msg);
                                                    break;
                                                }
                                                if (friend != null && friend.UserName == msg.To && msg.From == _me.UserName)
                                                {
                                                    wChatList1.Items.Insert(0, friend);
                                                    friend.SendMsg(msg, true);
                                                    break;
                                                }
                                            }
                                        }
                                        Wx_AlertForm.ShowWay showWay = Wx_AlertForm.ShowWay.UpDown;
                                        string aftitle = _me.NickName + "收到来自" + _me.ShowName + "一条消息";
                                        string afContent = msg.Msg;
                                        int afShowInTime, afShowTime, afShowOutTime;
                                        int afWidth, afHeigth;
                                        int.TryParse("100", out afShowInTime);
                                        int.TryParse("8000", out afShowTime);
                                        int.TryParse("800", out afShowOutTime);
                                        int.TryParse("250", out afWidth);
                                        int.TryParse("120", out afHeigth);
                                        af = new Wx_AlertForm();
                                        af.Show(afContent, aftitle, showWay, afWidth, afHeigth, afShowInTime, afShowTime, afShowOutTime);
                                    });
                                }
                            }
                        }
                    }
                    //System.Threading.Thread.Sleep(800);
                    //#region 开始任务
                    ////var robotID = table.Rows[0]["RobotId"].ToString();
                    //WxTaskCore wt = new WxTaskCore(sid, Uin, robotID);
                    //wt.user = _me;
                    ////接收消息事件
                    ////wt.OnRevice += new WxTaskCore.Revice(wt_OnRevice);
                    ////接收修改联系人消息
                    //wt.OnModifyContact += new WxTaskCore.ModifyContact(wt_OnModifyContact);
                    ////通知发送信息
                    //wt.OnNotifySend += new WxTaskCore.NotifySend(wt_OnNotifySend);
                    //////每一个微信号,开启一个线程
                    ////ThreadStart start = new ThreadStart(wt.ReviceMsg);
                    ////new Thread(start).Start();
                    ////启动发送线程
                    //new Thread(new ThreadStart(wt.AutoSendMsg)).Start();
                    //#endregion
                }
            })).BeginInvoke(null, null);
        }
Пример #17
0
        public string UploadMedia(string url, string picpath, string mediaName, string sid, string DeviceID, string fromUser, string toUser)
        {
            string result            = string.Empty;
            var    entity            = LoginCore.GetPassTicket(Uin);
            var    webwx_data_ticket = "";

            var lastModified     = new FileInfo(picpath).LastWriteTime;
            var dt               = lastModified.ToString("r").Replace(",", "") + lastModified.ToString("zzz").Replace(":", "");
            var lastModifiedDate = dt.Split(' ')[0].ToString() + " "
                                   + dt.Split(' ')[2].ToString() + " "
                                   + dt.Split(' ')[1].ToString() + " "
                                   + dt.Split(' ')[3].ToString() + " "
                                   + dt.Split(' ')[4].ToString() + " "
                                   + dt.Split(' ')[5].ToString() + " (中国标准时间)";



            var fileSize      = Tools.Tools.FileSize(picpath);
            var chunkSize     = 512 * 1024;
            var chunks        = Math.Ceiling((double)fileSize / (double)chunkSize);
            var clientMediaID = DateTime.Now.Millisecond;
            var fileMd5       = HttpService.GetMD5(picpath);
            var fs            = new FileStream(picpath, FileMode.Open, FileAccess.Read);
            var length        = fs.Length;
            var current       = 0;
            var bReader       = new BinaryReader(fs);

            byte[] data;
            var    byteCount = 512 * 1024;
            int    i         = 0;

            for (; current <= length; current = current + byteCount)
            //for (int i = 0; i < chunks; i++)
            {
                CookieContainer _cookiesContainer = HttpService.CookiesContainerDic[Uin];
                var             request           = (HttpWebRequest)WebRequest.Create(url);
                request.Accept = "*/*";
                request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
                request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
                request.ContentType = "multipart/form-data; boundary=----WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC";
                request.KeepAlive   = true;
                //request.ProtocolVersion = HttpVersion.Version11;
                request.Timeout           = 25000;
                request.AllowAutoRedirect = true;
                request.Host = "file." + LoginCore.GetPassTicket(Uin).WxHost;
                request.Headers.Add("Origin", "https://" + LoginCore.GetPassTicket(Uin).WxHost);
                request.Referer   = "https://" + LoginCore.GetPassTicket(Uin).WxHost + "/?&lang=zh_CN";
                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36";
                request.Method    = "POST";
                //ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
                if (!string.IsNullOrEmpty(Uin))
                {
                    request.CookieContainer = _cookiesContainer;  //启用cookie
                    foreach (var c in HttpService.GetAllCookies(_cookiesContainer))
                    {
                        Tools.Tools.WriteLog(c.ToString());
                        if (c.ToString().Contains("webwx_data_ticket"))
                        {
                            webwx_data_ticket = c.ToString().Split(new string[] { "=" }, StringSplitOptions.None)[1];
                        }
                    }
                }
                //ServicePointManager.ServerCertificateValidationCallback  += RemoteCertificateValidate;

                using (var ms = new MemoryStream())
                {
                    StringBuilder sb = new StringBuilder();
                    string        uploadmediarequest = "{\"UploadType\":2," +
                                                       "\"BaseRequest\":{" +
                                                       "\"Uin\":" + Uin + "," +
                                                       "\"Sid\":\"" + sid + "\"," +
                                                       "\"Skey\":\"" + entity.SKey + "\"," +
                                                       "\"DeviceID\":\"" + DeviceID + "\"}," +
                                                       "\"ClientMediaId\":" + clientMediaID + "," +
                                                       "\"TotalLen\":" + length + "," +
                                                       "\"StartPos\":0," +
                                                       "\"DataLen\":" + length + "," +
                                                       "\"FileMd5\":\"" + fileMd5 + "\"," +
                                                       "\"FromUserName\":\"" + fromUser + "\"," +
                                                       "\"ToUserName\":\"" + toUser + "\"," +
                                                       "\"MediaType\":4}";

                    var boundary = "------WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC\r\n";

                    var lastBoundary = "------WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC--\r\n";

                    var enterStr = "\r\n";

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"id\"\r\n\r\n");
                    sb.Append("WU_FILE_" + Core.Constant.WU_FILE_N + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"name\"" + enterStr + enterStr);
                    sb.Append(mediaName.Substring(mediaName.LastIndexOf("\\") + 1) + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"type\"" + enterStr + enterStr);
                    sb.Append("image/jpeg\r\n");


                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"lastModifiedDate\"" + enterStr + enterStr);
                    //sb.Append("Wed Dec 30 2015 15:24:14 GMT+0800 (中国标准时间)" + enterStr);
                    sb.Append(lastModifiedDate + enterStr);



                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"mediatype\"" + enterStr + enterStr);
                    sb.Append("pic" + enterStr);


                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"size\"\r\n\r\n");
                    sb.Append(fileSize + enterStr);

                    if (chunks > 1)
                    {
                        sb.Append(boundary);
                        sb.Append("Content-Disposition: form-data; name=\"chunks\"\r\n\r\n");
                        sb.Append(chunks + enterStr);
                        sb.Append(boundary);
                        sb.Append("Content-Disposition: form-data; name=\"chunk\"\r\n\r\n");
                        sb.Append(i + enterStr);
                    }

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"uploadmediarequest\"\r\n\r\n");
                    sb.Append(uploadmediarequest + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"webwx_data_ticket\"\r\n\r\n");
                    sb.Append(webwx_data_ticket + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"pass_ticket\"\r\n\r\n");
                    sb.Append(entity.PassTicket + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"filename\"; filename=\"" + picpath.Substring(picpath.LastIndexOf("\\") + 1) + "\"\r\n");
                    sb.Append("Content-Type: application/octet-stream\r\n\r\n");

                    var bytes1 = Encoding.UTF8.GetBytes(sb.ToString());
                    ms.Write(bytes1, 0, bytes1.Length);

                    sb.Clear();
                    sb = null;
                    fs.Seek(current, SeekOrigin.Current);
                    if (current + byteCount > length)
                    {
                        data = new byte[Convert.ToInt64((length - current))];
                        bReader.Read(data, 0, Convert.ToInt32((length - current)));
                    }
                    else
                    {
                        data = new byte[byteCount];
                        bReader.Read(data, 0, byteCount);
                    }
                    ms.Write(data, 0, data.Length);

                    var bytes2 = Encoding.UTF8.GetBytes(lastBoundary);
                    ms.Write(bytes2, 0, bytes2.Length);

                    using (var dataStream = request.GetRequestStream())
                    {
                        var bytes3 = ms.ToArray();
                        dataStream.Write(bytes3, 0, bytes3.Length);
                    }

                    using (var response = (HttpWebResponse)request.GetResponse())
                    {
                        using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                        {
                            result = reader.ReadToEnd();
                        }
                    }
                }
                i++;
            }
            fs.Close();
            JObject _resul  = JsonConvert.DeserializeObject(result) as JObject;
            var     result1 = _resul["MediaId"].ToString();

            return(result1);
        }