/// <summary> /// 获取好友列表并保存 /// </summary> internal static void Info_FriendList() { string url = "http://s.web2.qq.com/api/get_user_friends2"; string sendData = string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", vfwebqq, hash); string dat = HTTP.Post(url, sendData, "http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1"); JsonFriendModel friend = (JsonFriendModel)JsonConvert.DeserializeObject(dat, typeof(JsonFriendModel)); for (int i = 0; i < friend.result.info.Count; i++) { if (!FriendList.ContainsKey(friend.result.info[i].uin)) { FriendList.Add(friend.result.info[i].uin, new FriendInfo()); } FriendList[friend.result.info[i].uin].face = friend.result.info[i].face; FriendList[friend.result.info[i].uin].nick = friend.result.info[i].nick; Info_FriendInfo(friend.result.info[i].uin); } for (int i = 0; i < friend.result.friends.Count; i++) { if (!FriendList.ContainsKey(friend.result.friends[i].uin)) { FriendList.Add(friend.result.friends[i].uin, new FriendInfo()); } FriendList[friend.result.friends[i].uin].categories = friend.result.friends[i].categories; } for (int i = 0; i < friend.result.categories.Count; i++) { FriendCategories[friend.result.categories[i].index] = friend.result.categories[i].name; } Program.MainForm.ReNewListBoxFriend(); }
/// <summary> /// 发送消息 /// </summary> /// <param name="type">接受者类型:0,用户;1,群;2,讨论组</param> /// <param name="id">用户:uid;群:qid;讨论组:did</param> /// <param name="messageToSend">要发送的消息</param> /// <returns></returns> internal static bool Message_Send(int type, string id, string messageToSend) { Program.MainForm.listBoxLog.Items.Add(type + ":" + id + ":" + messageToSend); if (messageToSend.Equals("") || id.Equals("")) { return(false); } string[] tmp = messageToSend.Split("{}".ToCharArray()); messageToSend = ""; for (int i = 0; i < tmp.Length; i++) { if (!tmp[i].Trim().StartsWith("..[face") || !tmp[i].Trim().EndsWith("]..")) { messageToSend += "\\\"" + tmp[i] + "\\\","; } else { messageToSend += tmp[i].Replace("..[face", "[\\\"face\\\",").Replace("]..", "],"); } } messageToSend = messageToSend.Remove(messageToSend.LastIndexOf(',')); messageToSend = messageToSend.Replace("\r\n", "\n").Replace("\n\r", "\n").Replace("\r", "\n").Replace("\n", Environment.NewLine); try { string to_groupuin_did, url; switch (type) { case 0: to_groupuin_did = "to"; url = "http://d1.web2.qq.com/channel/send_buddy_msg2"; break; case 1: to_groupuin_did = "group_uin"; url = "http://d1.web2.qq.com/channel/send_qun_msg2"; break; case 2: to_groupuin_did = "did"; url = "http://d1.web2.qq.com/channel/send_discu_msg2"; break; default: return(false); } string postData = "{\"#{type}\":#{id},\"content\":\"[#{msg},[\\\"font\\\",{\\\"name\\\":\\\"宋体\\\",\\\"size\\\":10,\\\"style\\\":[0,0,0],\\\"color\\\":\\\"000000\\\"}]]\",\"face\":#{face},\"clientid\":53999199,\"msg_id\":#{msg_id},\"psessionid\":\"#{psessionid}\"}"; postData = "r=" + HttpUtility.UrlEncode(postData.Replace("#{type}", to_groupuin_did).Replace("#{id}", id).Replace("#{msg}", messageToSend).Replace("#{face}", SelfInfo.face.ToString()).Replace("#{msg_id}", rand.Next(10000000, 99999999).ToString()).Replace("#{psessionid}", psessionid)); string dat = HTTP.Post(url, postData, "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2"); return(dat.Equals("{\"errCode\":0,\"msg\":\"send ok\"}")); } catch (Exception) { return(false); } }
/// <summary> /// 登录第六步:获取在线成员、近期联系人(仅提交请求,未处理) /// </summary> private static void Login_GetOnlineAndRecent_FAKE() { string url = "http://d1.web2.qq.com/channel/get_online_buddies2?vfwebqq=#{vfwebqq}&clientid=53999199&psessionid=#{psessionid}&t=#{t}".Replace("#{vfwebqq}", vfwebqq).Replace("#{psessionid}", psessionid).Replace("#{t}", AID_TimeStamp()); HTTP.Get(url, "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2"); url = "http://d1.web2.qq.com/channel/get_recent_list2"; string url1 = "{\"vfwebqq\":\"#{vfwebqq}\",\"clientid\":53999199,\"psessionid\":\"#{psessionid}\"}".Replace("#{vfwebqq}", vfwebqq).Replace("#{psessionid}", psessionid); string dat = HTTP.Post(url, "r=" + HttpUtility.UrlEncode(url1), "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2"); }
/// <summary> /// 登录第五步:获取pessionid /// </summary> private static void Login_GetPsessionid() { string url = "http://d1.web2.qq.com/channel/login2"; string url1 = "{\"ptwebqq\":\"#{ptwebqq}\",\"clientid\":53999199,\"psessionid\":\"\",\"status\":\"online\"}".Replace("#{ptwebqq}", ptwebqq); url1 = "r=" + HttpUtility.UrlEncode(url1); string dat = HTTP.Post(url, url1, "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2"); psessionid = dat.Replace(":", ",").Replace("{", "").Replace("}", "").Replace("\"", "").Split(',')[10]; QQNum = uin = dat.Replace(":", ",").Replace("{", "").Replace("}", "").Replace("\"", "").Split(',')[14]; hash = AID_Hash(QQNum, ptwebqq); }
/// <summary> /// 获取群列表并保存 /// </summary> internal static void Info_GroupList() { string url = "http://s.web2.qq.com/api/get_group_name_list_mask2"; string sendData = string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", vfwebqq, hash); string dat = HTTP.Post(url, sendData, "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2"); JsonGroupModel group = (JsonGroupModel)JsonConvert.DeserializeObject(dat, typeof(JsonGroupModel)); for (int i = 0; i < group.result.gnamelist.Count; i++) { if (!GroupList.ContainsKey(group.result.gnamelist[i].gid)) { GroupList.Add(group.result.gnamelist[i].gid, new GroupInfo()); } GroupList[group.result.gnamelist[i].gid].name = group.result.gnamelist[i].name; GroupList[group.result.gnamelist[i].gid].code = group.result.gnamelist[i].code; Info_GroupInfo(group.result.gnamelist[i].gid); RuiRui.GetGroupSetting(group.result.gnamelist[i].gid); } Program.MainForm.ReNewListBoxGroup(); }