/// <summary> /// 对手机端信息进行同步 /// </summary> /// <param name="FromUserName"></param> /// <param name="ToUserName"></param> public static void WebwxStatusNotify(string FromUserName, string ToUserName) { NotifyPhoneEntity Npe = new NotifyPhoneEntity(); BaseRequestEntity br = new BaseRequestEntity(); br.DeviceID = MethodsHelper.GetDeviceId(); br.Sid = CommonDefine.LoginResult.wxsid; br.Skey = CommonDefine.LoginResult.skey; br.Uin = CommonDefine.LoginResult.wxuin; Npe.BaseRequest = br; Random ran = new Random(); Npe.ClientMsgId = MethodsHelper.GetClientMsgId();// "1497590764" + ((int)ran.Next(0, 9)).ToString() + ((int)ran.Next(0, 9)).ToString() + ((int)ran.Next(0, 9)).ToString(); Npe.Code = "1"; Npe.FromUserName = FromUserName; Npe.ToUserName = ToUserName; string PostData = JsonConvert.SerializeObject(Npe); string list = HttpMethods.PostData(UrlDefine.WexNotifyUrl + CommonDefine.LoginResult.pass_ticket, PostData, CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); if (list != null) { SendMsgResultEntity Sre = JsonConvert.DeserializeObject <SendMsgResultEntity>(list); if (Sre.BaseResponse.Ret == 0) { } //if (list.Count >= 1) //{ // Console.WriteLine(list[0].ToString()); //} } }
/// <summary> /// 获取群成员信息 /// </summary> /// <param name="GroupList"></param> public static void GetGroupContactsMethod(List <MemberListItemEntity> GroupList) { GroupContacts GC = new GroupContacts(); GC.BaseRequest = new BaseRequestEntity() { DeviceID = MethodsHelper.GetDeviceId(), Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey, Uin = CommonDefine.LoginResult.wxuin }; List <GroupListItem> GroupNumberList = new List <GroupListItem>(); for (int index = 0; index < GroupList.Count; index++) { if (GroupList[index].UserName.Contains("@@")) { GroupListItem Groupitem = new GroupListItem(); Groupitem.UserName = GroupList[index].UserName; GroupNumberList.Add(Groupitem); } } GC.List = GroupNumberList; GC.Count = GroupNumberList.Count; string PostData = JsonConvert.SerializeObject(GC); string Result = HttpMethods.PostData(string.Format(UrlDefine.GetQunContactUrl, CommonDefine.LoginResult.pass_ticket), PostData, CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); if (!string.IsNullOrWhiteSpace(Result)) { GroupMemberListEntity GroupMumberInfo = JsonConvert.DeserializeObject <GroupMemberListEntity>(Result); CommonDefine.GroupMemberList = GroupMumberInfo; } else { LogWriter.Write("获取群成员失败,返回结果为空!", LogPathDefine.WeChatGrouplogPath); } //GGC.List=new List<Entity.ListItem>( }
/// <summary> /// 发送文件 /// </summary> /// <param name="Fe">文件类型</param> /// <param name="FileData">文件byte</param> public static void SendFile(FileEntity Fe, byte[] FileData) { Fe.BaseRequest = new BaseRequestEntity() { DeviceID = MethodsHelper.GetDeviceId(), Uin = CommonDefine.LoginResult.wxuin, Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey }; string Boundary = "------WebKitFormBoundaryUOlSZtOip6JP4NSr"; HttpMethods.AddContent("id", "WU_FILE_0", Boundary); HttpMethods.AddContent("name", Fe.FileName, Boundary); HttpMethods.AddContent("type", Fe.FileType, Boundary); HttpMethods.AddContent("lastModifiedDate", Fe.FileModiftTime.ToLocalTime().ToString(), Boundary); HttpMethods.AddContent("size", Fe.DataLen.ToString(), Boundary); HttpMethods.AddContent("mediatype", Fe.Mediatype1, Boundary); HttpMethods.AddContent("uploadmediarequest", JsonConvert.SerializeObject(Fe), Boundary); HttpMethods.AddContent("webwx_data_ticket", CommonDefine.GetCookieDictionary == null ? "" : CommonDefine.GetCookieDictionary["webwx_data_ticket"], Boundary); //"gScOa2YvEEtszEvhoxdwXCeg" HttpMethods.AddContent("pass_ticket", CommonDefine.LoginResult.pass_ticket, Boundary); //"ekYYf2P7xOH5iI+oYrf/GiGrZhE+fUEGMiXe3Pq71rb4MDe+7ICbD+kglD4ZE+Ey" HttpMethods.AddContent("filename", Fe.FileName, Fe.FileType, FileData, Boundary); HttpMethods.OptionsDataMulitData(UrlDefine.SendFileUrl, CommonDefine.Cookies, Encoding.UTF8, Boundary); HttpMethods.PostDataMulitData(UrlDefine.SendFileUrl, CommonDefine.Cookies, Encoding.UTF8, Boundary); }
/// <summary> /// 发送消息 /// </summary> /// <param name="Msg">消息体</param> /// <param name="IsAddChatList">是否添加到聊天列表</param> /// <param name="ToName">向谁发送</param> public static bool SendToOtherMsg(string Msg = "", string ToName = "") { string SendMsg = string.Empty; string LocalMsgId = MethodsHelper.GetClientMsgId(); if (!string.IsNullOrWhiteSpace(Msg)) { SendMsg = Msg; } string chaturl = UrlDefine.ChatUrl + CommonDefine.LoginResult.pass_ticket; SendMsgBodyEntity Smbe = new SendMsgBodyEntity() { BaseRequest = new BaseRequestEntity() { DeviceID = MethodsHelper.GetDeviceId(), Uin = CommonDefine.LoginResult.wxuin, Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey }, Msg = new SendMsgEntity() { Type = MsgTypeEnum.Text, FromUserName = CommonDefine.BaseContact.User.UserName, ToUserName = ToName, Content = Msg, LocalID = LocalMsgId, ClientMsgId = LocalMsgId } }; string PostData = JsonConvert.SerializeObject(Smbe); string Result = HttpMethods.PostData(chaturl, PostData, CommonDefine.Cookies, Encoding.UTF8, "AcceptEncoding", "gzip, deflate").ContentData.ToString(); SendMsgResultEntity Sre = JsonConvert.DeserializeObject <SendMsgResultEntity>(Result); if (Sre.BaseResponse.Ret == 0) { //消息发送成功 CommonMethodCallBackHandlers.OnSendMsgCompleted(true); return(true); } else { Console.WriteLine("发送失败:" + Result); CommonMethodCallBackHandlers.OnSendMsgCompleted(false); return(false); } }
/// <summary> /// 获取聊天信息 /// </summary> /// <param name="SyncKeyList"></param> /// <returns></returns> public static string GetMsg(SyncKeyEntity SyncKey) { string ReturnKey = string.Empty; ReceiveMsgEntity Rme = new ReceiveMsgEntity(); GetMsgEntiy Gme = new GetMsgEntiy() { BaseRequest = new BaseRequestEntity() { Uin = CommonDefine.LoginResult.wxuin, Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey, DeviceID = MethodsHelper.GetDeviceId() }, SyncKey = SyncKey, rr = -113317163 }; string PostData = JsonConvert.SerializeObject(Gme); string posturl = UrlDefine.GetChatUrl + "sid=" + CommonDefine.LoginResult.wxsid + "&skey=" + CommonDefine.LoginResult.skey + "&pass_ticket=" + CommonDefine.LoginResult.pass_ticket; string Msglist = HttpMethods.PostData(posturl, PostData, CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); try { Rme = JsonConvert.DeserializeObject <ReceiveMsgEntity>(Msglist); CommonDefine.SyncKey = Rme.SyncKey; } catch (Exception ex) { Console.WriteLine("GetMsg" + ex.Message); } try { if (Rme.AddMsgCount != 0) { //说明有消息 AnalyseMsg(Rme.AddMsgList); } else { //到这 说明没有消息 } } catch (Exception ex) { // KeepHeart(FristKey); Console.WriteLine("GetMsg is out Exception" + ex.Message); } return(ReturnKey); }
/// <summary> /// 获取心跳key /// </summary> /// <returns></returns> public static string GetSyncKey() { BaseRequestEntity Bre = new BaseRequestEntity() { Uin = CommonDefine.LoginResult.wxuin, Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey, DeviceID = MethodsHelper.GetDeviceId() }; BaseRequestSubmitEntity le = new BaseRequestSubmitEntity() { BaseRequest = Bre }; string SyncKeyData = JsonConvert.SerializeObject(le); string SyncKeyUrl = UrlDefine.GetSyncKey + CommonDefine.LoginResult.pass_ticket; string SyncKeyList = HttpMethods.PostData(SyncKeyUrl, SyncKeyData, CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); BaseContactEntity bce = JsonConvert.DeserializeObject <BaseContactEntity>(SyncKeyList); CommonDefine.SyncKey = bce.SyncKey; string SyncKey = string.Empty; for (int index = 0; index < bce.SyncKey.List.Count; index++) { if (!string.IsNullOrWhiteSpace(SyncKey)) { SyncKey = SyncKey + "|"; } SyncKey = SyncKey + bce.SyncKey.List[index].Key + "_" + bce.SyncKey.List[index].Val; } Thread.Sleep(5000); return(SyncKey); }
/// <summary> /// 登录 /// </summary> public static void Login() { string str = string.Empty; HttpMethods.ContentType = "application/json;charset=utf-8"; while (true) { if (!str.Contains("200")) { HttpResponseResult ResponseResult = HttpMethods.Get(UrlDefine.WaitingUrl(UrlDefine.Tickets), CommonDefine.Cookies, Encoding.UTF8); str = ResponseResult.ContentData.ToString(); Console.WriteLine("当前返回值是:" + str); if (str.Contains("201")) { //扫码登录中 string[] base64 = str.Split(','); CommonDefine.Base64 = base64[1]; byte[] arr = Convert.FromBase64String(CommonDefine.Base64.Replace("'", "").Replace(";", "").Trim()); File.WriteAllBytes(Environment.CurrentDirectory + "\\User.jpg", arr); MemoryStream ms = new MemoryStream(arr); BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms;// new FileStream(); bi.EndInit(); CommonDefine.UserImage = bi; CommonMethodCallBackHandlers.OnLoginScranQRCodeCompleted(Environment.CurrentDirectory + "\\User.jpg"); } } if (str.Contains("200")) { //扫码登录完成 LogWriter.Write("扫码登录成功...", LogPathDefine.WeChatLogPath); string[] strs = str.Split(';'); UrlDefine.LoginUrls = strs[1].Substring(strs[1].IndexOf("=\"") + 2, strs[1].Length - strs[1].IndexOf("=\"") - 3); string XmlList = HttpMethods.Get(UrlDefine.LoginUrls, CommonDefine.Cookies, Encoding.UTF8, true).ContentData.ToString(); CommonDefine.GetCookieDictionary = HttpMethods.SetCookieDictionary; CommonDefine.LoginResult = XMLHelper.DESerializer <LoginResultEntity>(XmlList); //此处可用于二次点击登录 LogWriter.Write(CommonDefine.LoginResult.wxuin, Environment.CurrentDirectory + "\\Data\\data.dat"); Random r = new Random(); BaseRequestEntity Bre = new BaseRequestEntity() { Uin = CommonDefine.LoginResult.wxuin, Sid = CommonDefine.LoginResult.wxsid, Skey = CommonDefine.LoginResult.skey, DeviceID = MethodsHelper.GetDeviceId() }; BaseRequestSubmitEntity le = new BaseRequestSubmitEntity() { BaseRequest = Bre }; string postdata = JsonConvert.SerializeObject(le); string MySelfList = HttpMethods.PostData(UrlDefine.GetLoginId + CommonDefine.LoginResult.pass_ticket, postdata, CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); LogWriter.Write(string.Format("获取个人信息{0}...", MySelfList), LogPathDefine.WeChatLogPath); CommonDefine.BaseContact = JsonConvert.DeserializeObject <BaseContactEntity>(MySelfList); string ContentList = HttpMethods.Get(UrlDefine.GetContactUrl(CommonDefine.LoginResult.pass_ticket, CommonDefine.LoginResult.skey), CommonDefine.Cookies, Encoding.UTF8).ContentData.ToString(); CommonDefine.ContactsList = JsonConvert.DeserializeObject <ContactsListEntity>(ContentList); LogWriter.Write(string.Format("获取联系人信息{0}...", ContentList), LogPathDefine.WeChatLogPath); new Task(() => { GetGroupContactsMethod(CommonDefine.ContactsList.MemberList); }).Start(); new Task(() => { CommonDefine.ContactsList.MemberList.ForEach((p) => { p.DownloadImage(); }); }).Start(); CommonMethodCallBackHandlers.OnLoginCompleted(true); break; } Thread.Sleep(5000); } }