C# 获取QQ好友列表信息的实现
分析部分 当我们访问QQ空间的时候,大家可以在右侧的发现一个这样的统计信息 当点击这个链接的时候,会跳转到这样一个URL这个URl可以管理好友,当然也就能读取到好友 上面我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查找到web请求和内容信息,我们就会找到如下一个URL,当然Fiddler是在操作之前打开的 通过Fiddler发现返回的是JSON数据,实际的实现是跨域JSON,JSON的结构,是两个数组,一个分组信息,一个好友列表 详细的具体JSON信息,我就不在说了,感兴趣的可以自己去分析 代码实现部分 更具上面的分析,我们首先需要实现数据模型(好友和分组信息) public class QQGroupMemberInfo { public string QQ { get; set; } public string NickName { get; set; } } /// <summary> /// QQ好友 /// </summary> public class QQFriendMember : QQGroupMemberInfo { public int FriendGroupId { get; set; } } /// <summary> /// 好友分组 /// </summary> public class QQFiendGroup { public string Name { get; set; } public int GroupId { get; set; } public int SortId { get; set; } } /// <summary> /// 好友信息返回模型 /// </summary> public class QQFriendInfo { public QQFriendInfo() { GroupInfos = new List<QQFiendGroup>(); QQFriends = new List<QQFriendMember>(); } public List<QQFiendGroup> GroupInfos { get; set; } public List<QQFriendMember> QQFriends { get; set; } } 提交GET请求,获取数据 string friendUrl = string.Format("http://r.cnc.qzone.qq.com/cgi-bin/tfriend/friend_mngfrd_get.cgi?uin={0}", _cleintKeyInfo.ClientUin); string jsonF = GetWebData<string>(friendUrl); 使用Javascript运行时解析数据 StringBuilder script = new StringBuilder(); script.AppendLine("function _Callback(o){return o; };"); script.AppendLine(jsonF); var data = JavaScriptEngine.Run(script.ToString()) as Dictionary<string, object>; 获取解析数据 var gpnames = data["gpnames"] as object[];//组信息 var items = data["items"] as object[];//好友信息 //遍历组 foreach (var g in gpnames) { var gitem = (g as Dictionary<string, object>); qfi.GroupInfos.Add(new QQFiendGroup() { GroupId = int.Parse(gitem["gpid"].ToString()), Name = gitem["gpname"].ToString(), SortId = int.Parse(gitem["sortid"].ToString()) }); } //遍历成员 foreach (var f in items) { var fitem = (f as Dictionary<string, object>); qfi.QQFriends.Add(new QQFriendMember() { FriendGroupId = int.Parse(fitem["groupid"].ToString()), NickName = fitem["name"].ToString(), QQ = fitem["uin"].ToString() }); } 总结 其实QQ的数据是比较好获取的,只是登陆比较困难而已,关于登陆部分实现,我blog前面的一些文章已经实现过了,这里不再罗嗦 对于HTTP协议的数据分析,主要使用HTTP协议分析工具来解析,再结合浏览器的控制台来分析 完整源码:/Files/Rolends/code.rar QQ 讨论组广告群发工具(已开发完成)索引 转载请注明:http://www.cnblogs.com/Rolends