如何获取qq群 全体成员成员的json串

抓取网页数据工具新增功能json提取示例
浏览:4298
&&使用过最新版的朋友应该都发现V9新增了json提取的功能,但是许多使用的朋友在操作此功能的时候都会觉得有点弄不明白,这里特意为大家整理了json提取的教程示例,感兴趣的朋友可以仔细研究一下。& & &首先大家需要明白JSON 是有两种结构,简单的说json就是javascript中的对象和数组,所以这两种结构就是对象和数组两种,通过这两种结构可以表示各种复杂的结构。下面具体说明一下。1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为属性值,所以很容易理解,取值方法为对象key 获取属性值value,这个属性值的类型可以是数字、字符串、数组、对象几种。2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为[&java&,&javascript&,&vb&,...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。&&经过对象、数组2种结构就可以组合成复杂的数据结构了。如下:{ &name&: &中国&, &province&: [{ &name&: &黑龙江&, &cities&: { &city&: [&哈尔滨&, &大庆&] } }, { &name&: &广东&, &cities&: { &city&: [&广州&, &深圳&, &珠海&] } }, { &name&: &台湾&, &cities&: { &city&: [&台北&, &高雄&] } }, { &name&: &新疆&, &cities&: { &city&: [&乌鲁木齐&] } }] }&&& 我们可以借助工具 测试是否是JSON,格式化后如图: &&下面举例说明JSON提取的2种方式:1、JSON数据源:URL网址&&如我们需要对JSON网址 做采集&&分析得出:此URL的整个源代码是个完整的JSON。 所以JSON数据源选择 URL网址然后勾选循环匹配,就可以采集到整个JSON里的数据。如图:2、JSON数据源:JSON文本: 另外一种情况,网址里的源码不全是JSON,而只是一部分代码是JSON形式,此时我们需要提取出这段JSON文本,然后再格式化。例如网址 &&所以我们需要通过多页的形式,来获取本页地址里这部分JSON代码,然后再设置JSON表达式。如图:&&按照上面的步骤,两种JSON提取就完成了,广大用户朋友们是不是觉得简单又好用,所以抓取网页数据工具首选火车采集器V9,功能全面且易用,新手朋友们多多联系,一定能快速上手,如还有疑问或其他问题请随时联系官方客服为您解答哦!
服务热线:400-周一至周六9:00-21:00
业务咨询:6-603周一至周六9:00-17:30
还没有账号?
服务热线400-周一至周六9:00-21:00
业务咨询6-603周一至周六9:00-17:30
安徽合肥瑶海区胜利路秀珍大厦B座706室
如果有紧急问题, 请联系企业QQ
400-(周一至周六9:00-21:00)
6-603(周一至周六9:00-17:30)
关注微信号了解更多织梦模板建站、织梦仿站,推荐选跟版网(专业织梦模板定制下载站),您可以把织梦模板网:
亲,跟版网是专业的DEDECMS模板下载和定制开发服务商!您可以选择或者
织梦json数据调用标签及其例子
& &以下内容您可能感兴趣: &
& 在织梦全局标签里面,有一个一般人都用不到的标签json标签,它跟其它标签一样,也是在织梦模板中调用数据的。在了解json标签前,先看看什么是json?json是一种数据格式,但它并不是一种语言,json独立于如c,php,javerscrip等语言的数据格式。
& 一般用在数据交互的功能里面,例如,动态从数据库取出数据,从运程取出过来数据,都可以用到json,json与其它格式的数据相比,体积小而轻,易于保存传输,跨平台,跨语言等优点,被各种程序语言使用。织梦里面不仅有json标签,还有很多的对于json数据的应用。
& 织梦json标签调用方法:
{dede:json url='http://yoursite/json.php' cache=300}
&&& [field:id/]-[field:title/]&br/&
{/dede:json}
& 这个标签调用例子在织梦手册里已经给我们提供了,url是一个远程json接口地址,这个接口文件json.php代码 里面,最后的返回必须是把数据通过json_encode($feeds)系统函数,进行json编码后,通过echo或print()函数来打印出来,这二点是必须的,然后,在前台我们就可以通过$.ajax()或$.getjson()来获取数据。
& 织梦系统给我们提供了一个json类,在include/json.class.php文件里面,也就是是说,我们对在php文件里面,转换成json编码,就有了二种方法:
& 1.直接用php系统给我们提供的系统函数,json_encode(),我建立大家用这个,即简单又省事,既然,php系统给我们提供了,我们可以不用织梦系统提供的。
& 2.就是用织梦系统提供的,encode(),在使用前,首先引入json.class.php,即:
&& require_once(DEDEINC.'/json.class.php');
&& $json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);
&& echo $json-&encode($reval);
& $reval这个变量是我们从数据库或其它地方得到的,一般是一个二维数组,例如下:
& [0] =& Array ( [id] =& 95 [title] =& 原图设计)
& [1] =& Array ( [id] =& 113 [title] =& ssssssssssss)
& [2] =& Array ( [id] =& 111 [title] =& hjhj )
& [3] =& Array ( [id] =& 110 [title] =& ssssssssssss)
& 经echo 以后,显示的内容如下所示。
&& {&id&:&95&,&title&:&\u539f\u521b&},
&& {&id&:&113&,&title&:&ssssssssssss&},
&& {&id&:&111&,&title&:&hjhj&},
&& {&id&:&110&,&title&:&ssssssssssss&}
& 这是经过encode()或用json_encode()后,显示的内容。即,用中括号括起来的,几个json数据,这个数据回给请求的$.ajax()或$.getjson(),并由其对这个数据进行处理,显示我们相要的结果。
& 实际上,织梦系统里面就有关于json的应用,进入到织梦系统会员首页(你的域名/member),找到如下图所示。
& 这三个选择卡,就是对json的经典应用,当然,这里不用标签{dede:json}{/dede:json},而是用的是$.ajax,来实现动态,从数据库中获取数据,并显示在这个位置。如果把这个小小的功能看明白话,需要,你会jquery。
& 这个功能用到的文件有:member/templets/index. member/templets/js/feed. member/feed.php。现在我们就对这个进行加功改造,实现用织梦标签调用。
& 打开文件feed.php,把CheckRank(0,0);注释掉,即前面加双杠 //CheckRank(0,0);因为这句是检测,会员权限,我们不用所以去掉。
& 现在我们就可以写json标签:
& {dede:json url='http://127.0.0.1/member/feed.php' cache=0}
&&& [field:id/]-[field:title/]&br/&
{/dede:json}
& 可以放到自己模板里,也可以,到织梦后缀,全局检测去测试一下吧。效果如下图所示。
& 本教程,只是对json标签,以及织梦系统里面的一个具体的实例进行简单,介绍,如果想真正了解,通过ajax调用json数据,那么,请先精通jquery和ajax,才能过织梦这个例子有一个深刻了解。
跟版网-专业织梦模板下载平台,转载请注明出处:
& &精心为您推荐: &
& &邀您关注: &
扫描左侧二维码即可在手机端访问此页面
扫描左侧二维码即可关注跟版网官方微信公众号,获取金币模板,还可以免费仿站哦!
扫描左侧二维码即可加入跟版网官方群,免费获取金币资源并可以与其他织梦高手共同交流学习
跟版网率先实现织梦的三网合一网站,从即日起()日,跟版网会陆续免费分享一批金币资源给需要的朋友,关注本站认证官方微信公众账号并回复相应的提取码,系统会自动将下载地址发送给您,同时这些金币资源也会分享在官方的QQ群中,欢迎各位朋友踊跃加入。另外本站后期会每周选择大家比较喜欢的网站仿制,并免费分享给大家,还有免费送金币活动哦!
- dede源码分享
售价:2金币
- dede源码分享
售价:40金币
- 织梦html5模板
售价:60金币
- 织梦html5模板
售价:60金币
- dede源码分享
售价:60金币
& & & 跟版网竭力打造中国最大的织梦源码和织梦模板商城,我们有一批经验丰富的设计师和程序员,发展五年,跟版网拥有丰富的织梦模板,欢迎您的咨询,我们将竭诚为您提供最优质的服务。
& & & 跟版网织梦源码商城坚持“创意+品质+服务”的高端理念,运用创意设计的理念为您塑造高品质的网络品牌形象。凭借五年的探索和实践,跟版网织梦源码商城拥有一支经验丰富、技术精湛、尽职尽责的网络服务团队。精品网站建设,从跟版网织梦源码商城建站开始。
& & & 跟版网织梦源码和模板可分为两种形式获得,一种是官方源码,另外一种是会员共享源码。两种源码都分为免费和收费两种形式。
& & & 跟版网官方收费源码可通过支付费用获得,具体操作流程可查看网址:。会员共享源码可通过共享模板获取金币下载。如觉得麻烦,可以联系客服QQ:进行金币充值,充值后可随意下载。posts - 33,&
comments - 130,&
trackbacks - 0
1,群数据获取
        当访问我们通过Fiddler可以查看到QQ群列表是从这个URL获取到的群列表信息
         
   其中返回的json数据,json构成如下
            
          从上面我们可以看出c包含的是群列表信息,r包含的是服务器的信息,其中c的某一项构成如下图所示
                     
        从上面可以看出项名称就是群号,owner为所有者,name为群名称,memo群描述,brief为群公告信息,还有其他的一些信息,大家自己去匹配,我这里就不一一解释了.
   2, 单个群的成员获取,在上面我们分析了如何获取群列表,下面我们将分析如何取得单个群成员的数据
      当我们点开某个群可以看到有查看通讯录的选项
    
     此时我们通过Fiddler监视可以发现,群成员信息,通过如下地址取得
          
    但是我经过几次点击测试,发现URL参数规则如下
     
      贴出参数构造规则
     
const string groupMemberUrl = &/air/{0}/addr/index/type/1/p/{1}?w=n&_={2}&;
string memberURL = string.Format(groupMemberUrl, gInfo.Number, page, JavascriptAction.Random());
我们按照这样的地址去请求,就会得到QQ群成员的HTML,然后我在解析HTML就可以得到相应的数据了
    1, 获取群列表
public List&GroupInfo& GetGroupInfos()
if (!isLogin) Login();
List&GroupInfo& giList = new List&GroupInfo&();
string json = GetWebData&string&(string.Format(groupListUrl, JavascriptAction.Random()));
var jsonObj = JavaScriptEngine.Run(&var m=& + json + &;m.c&) as Dictionary&string, object&;
foreach (var key in jsonObj.Keys)
var gi = (jsonObj[key] as Dictionary&string, object&);
if (!gi.ContainsKey(&owner&)) continue;
string owner = gi[&owner&].ToString();
string name = gi[&name&].ToString();
string max_member = gi[&max_member&].ToString();
string create_time = gi[&create_time&].ToString();
string notice = gi[&brief&].ToString();
string number =
string memo = gi[&memo&].ToString();
giList.Add(new GroupInfo()
CreateTime = JavascriptAction.GetTimeByJsTime(Convert.ToInt64(create_time)),
MaxNumber = Convert.ToInt32(max_member),
Memo = memo,
Name = name,
Notice = notice,
Number = number,
Owner = owner
return giL
         上面的函数实现了群列表的获取,需要说明的是获取到的json是同过javascript引擎来运行的,javascript运行我通过Javascript .NET()来实现的,获取web数据参考我的blog的另外的文章,文章有实现源代码,至于登陆我最后会说明
   2, 获取群成员
      
public List&QQGroupMemberInfo& GetMemberInfo(GroupInfo gInfo)
if (!isLogin) Login();
List&QQGroupMemberInfo& gmis = new List&QQGroupMemberInfo&();
int page = 1;
int pageCount = 0;
GETMEMBER:
string memberURL = string.Format(groupMemberUrl, gInfo.Number, page, JavascriptAction.Random());
string html = GetWebData&string&(memberURL);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
if (pageCount & 1)
var seeBtn = doc.DocumentNode.SelectSingleNode(pageBtnPath);
pageCount = Convert.ToInt32(seeBtn.Attributes[&allpage&].Value);
var trs = doc.DocumentNode.SelectNodes(memberTrPath);
foreach (var tr in trs)
var tds = tr.Descendants(&td&).ToList();
if (tds.Count & 1) continue;
string groupNick = tds[1].Element(&a&).InnerText.Trim();
string qq = tds[2].Element(&span&).InnerText.Trim();
gmis.Add(new QQGroupMemberInfo()
NickName = groupNick,
if (page & pageCount)
goto GETMEMBER;
   上面的函数实现了群成员的获取,其中HTML的解析式通过HtmlAgilityPack()来实现,HtmlAgilityPack通过XPATH语法去解析实现的,关于xpath不是很难,大家查查资料就会了
   3,关于登陆的实现
     QQweb端的登陆有两种实现,第一种是web登陆,通过这样的URL实现来实现登陆,具体的实现原理,我前面有文章描述过了,这里就不罗嗦了,把类贴出来供大家参考
public class LoginQQ : WebPageAction, ILogin, IValidateCodeAction
static JavaScriptEngine _javaEngine = new JavaScriptEngine();
static bool _isInitJava = false;
Random _r = new Random();
const string loginFormUrl = &http://ui./cgi-bin/login?link_target=blank&appid=&hide_title_bar=1&s_url=http%3A%2F%%2Floginproxy.html%3Flogin_level%3D2&f_url=loginerroralert&target=self&;
private User User { }
string _qq = &&;
public LoginQQ(CookieManager cookieManager, User user)
: base(user.UserName)
_cookieManager = cookieM
_qq = user.UserName.Split('@')[0];
if (!_isInitJava)
_javaEngine.Run(System.IO.File.ReadAllText(@&JavaScript\qq\md5_3.js&));
_isInitJava = true;
public override JavaScriptEngine JavaScriptEngine
return _javaE
_javaEngine = value;
string vc_type = &&;
public bool Login(string referer)
DateTime beginTime = DateTime.N
string html = &&;
html = GetWebData&string&(loginFormUrl);
if (!regForm.IsMatch(html))
ThrowException(507, html);
var form = GetFormDataByFormHtml(regForm.Match(html).Value);
string url = &/check?uin=& + _qq + &&appid=&& + JavascriptAction.Random();
html = GetWebData&string&(url, referer: loginFormUrl);
string vcode = &&;
if (html.Contains(&ptui_checkVC('1','&))
vc_type = html.Replace(&ptui_checkVC('1','&, &&).Replace(&'&, &&).Replace(&)&, &&).Replace(&;&, &&);
form = new NameValueCollection();
if (!ValidationImageCode(form, loginFormUrl)) { return false; };
vcode = form[&verifycode&];
else if (html.Contains(&ptui_checkVC('0','&))
vcode = html.Replace(&ptui_checkVC('0','&, &&).Replace(&'&, &&).Replace(&)&, &&).Replace(&;&, &&);
TimeSpan _tspan = TimeSpan.FromTicks(DateTime.Now.Ticks - beginTime.Ticks);
if (_tspan.Seconds & 20)
Thread.Sleep(TimeSpan.FromSeconds(_r.Next(20 - _tspan.Seconds, 30)));
string pMd5 = GetPwdString(User.Pwd, vcode);
string action = &0-0& + &-& + (JavascriptAction.GetTime(DateTime.Now) - JavascriptAction.GetTime(beginTime));
url = &/login?u=& + _qq + &&p=& + pMd5 + &&verifycode=& + vcode + &&aid==http%3A%2F%%2Floginproxy.html%3Flogin_level%3D2&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert&action=& + action + &&mibao_css=&;
html = GetWebData&string&(url, referer: loginFormUrl);
if (html.Contains(&登录成功&))
return true;
return false;
private string GetPwdString(string pwd, string vcode)
string script = &md5(md5_3('& + pwd + &') + '& + vcode + &')&;
return JavaScriptEngine.Run(script).ToString();
public bool ValidateLogin(string referer)
var cks = _cookieManager.GetCookies(new Uri(referer).Host);
if (cks[&uin&] != null && cks[&skey&] != null)
return true;
return false;
public bool ValidationCode(string code, string referer)
return true;
public Image GetValidateCode(string referer)
string url = &/getimage?aid=&r=& + JavascriptAction.Random() + &&uin=& + _qq + &&vc_type=& + vc_
return GetWebData&Image&(url, referer: referer);
public bool ValidationImageCode(NameValueCollection customFormItems, string referer)
ValidateReturn code = null;
Image image = GetValidateCode(referer);
code = this.FireValidateCode(image);
if (code.IsCancel)
return false;
if (customFormItems.AllKeys.Contains(&verifycode&))
customFormItems.Remove(&verifycode&);
customFormItems.Add(&verifycode&, code.Code);
while (code.IsChange || !ValidationCode(code.Code, referer));
return true;
第二种就是从客户端点击,如QQ空间按钮,客户端会调用浏览器跳转
这样的地址,通过这个URL实现登陆,那么我们只需要HOOK ShellExecuteExW这个入口点就可以实现URL的截取,关于钩子如何实现,我前面有文章已说过,同样贴上代码供大家参考
public class ClientQQWebction : WebPageAction, IDisposable
const string loginUrl = &/jump?ptlang={2}&clientuin={0}&clientkey={1}&u1={3}&;
const string getEmail = &/cgi-bin/account/ajaxgetmail?uin={0}&;
const string groupListUrl = &/air/group/mine?w=a&_={0}&;
const string groupMemberUrl = &/air/{0}/addr/index/type/1/p/{1}?w=n&_={2}&;
const string pageBtnPath = &//input[@type=\&button\& and @value=\&查看\& and @act=\&gotopage\&]&;
const string memberTrPath = &//table[@class=\&addressList\&]/tr&;
CleintKeyInfo _cleintKeyInfo = null;
bool isLogin = false;
public ClientQQWebction(CleintKeyInfo cki)
_cleintKeyInfo =
private void Login()
string loginURL = string.Format(loginUrl, _cleintKeyInfo.ClientUin, _cleintKeyInfo.ClientKey, _cleintKeyInfo.PtLang, string.Format(getEmail, _cleintKeyInfo.ClientUin));
var loca = GetWebData&ResponseLocation&(loginURL);
if (_cookieManager.GetCookies(&&)[&skey&] != null)
isLogin = true;
throw new Exception(&登陆失败&);
public string GetEmail()
if (!isLogin) Login();
string emailUrl = String.Format(getEmail, _cleintKeyInfo.ClientUin);
var html = GetWebData&string&(emailUrl);
if (regEmail.IsMatch(html))
return regEmail.Match(html).ToString();
return null;
public List&GroupInfo& GetGroupInfos()
if (!isLogin) Login();
List&GroupInfo& giList = new List&GroupInfo&();
string json = GetWebData&string&(string.Format(groupListUrl, JavascriptAction.Random()));
var jsonObj = JavaScriptEngine.Run(&var m=& + json + &;m.c&) as Dictionary&string, object&;
foreach (var key in jsonObj.Keys)
var gi = (jsonObj[key] as Dictionary&string, object&);
if (!gi.ContainsKey(&owner&)) continue;
string owner = gi[&owner&].ToString();
string name = gi[&name&].ToString();
string max_member = gi[&max_member&].ToString();
string create_time = gi[&create_time&].ToString();
string notice = gi[&brief&].ToString();
string number =
string memo = gi[&memo&].ToString();
giList.Add(new GroupInfo()
CreateTime = JavascriptAction.GetTimeByJsTime(Convert.ToInt64(create_time)),
MaxNumber = Convert.ToInt32(max_member),
Memo = memo,
Name = name,
Notice = notice,
Number = number,
Owner = owner
return giL
public List&QQGroupMemberInfo& GetMemberInfo(GroupInfo gInfo)
if (!isLogin) Login();
List&QQGroupMemberInfo& gmis = new List&QQGroupMemberInfo&();
int page = 1;
int pageCount = 0;
GETMEMBER:
string memberURL = string.Format(groupMemberUrl, gInfo.Number, page, JavascriptAction.Random());
string html = GetWebData&string&(memberURL);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
if (pageCount & 1)
var seeBtn = doc.DocumentNode.SelectSingleNode(pageBtnPath);
pageCount = Convert.ToInt32(seeBtn.Attributes[&allpage&].Value);
var trs = doc.DocumentNode.SelectNodes(memberTrPath);
foreach (var tr in trs)
var tds = tr.Descendants(&td&).ToList();
if (tds.Count & 1) continue;
string groupNick = tds[1].Element(&a&).InnerText.Trim();
string qq = tds[2].Element(&span&).InnerText.Trim();
gmis.Add(new QQGroupMemberInfo()
NickName = groupNick,
if (page & pageCount)
goto GETMEMBER;
public void Dispose()
_cookieManager = null;
JavaScriptEngine = null;
OK,到此完成,下篇实现qq好友数据获取
最近失业了,求职中………
阅读(...) 评论()本篇主要是:&获取好友列表,群列表
我会尽量详细一点,尽我所知的分享一些可能大家已经掌握的或者还不清楚的经验
利于大家阅读,文章样式不再复杂化,根据内容取固定色
目前总进度大概65%
全系列预计会有这些步骤,当然某些步骤可能会合并:
第一次登陆
第二次登陆
保持在线和接收消息
获取好友和群列表
变成智能的(*?&?*)
P = function (b, j) {
for (var a = j + "password error", i = "", E = []; ;)
if (i.length &= a.length) {
if (i += b, i.length == a.length)
i = i.slice(0, a.length);
for (var c = 0; c & i. c++) E[c] = i.charCodeAt(c) ^ a.charCodeAt(c);
a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
for (c = 0; c & E. c++) i += a[E[c] && 4 & 15], i += a[E[c] & 15];
传入了2个参数:QQ号码、ptwebqq(文章2中从cookie中拿到)
地址:http://s./api/get_user_friends2
referer:http://s./proxy.html?v=&callback=1&id=1
post字符串:string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", this.VfWebQQ, this.Hash);
返回json对象由两部分组成:retcode、result,前者表示请求是否成功不提,我们主要看result,里面包含了这些东西:
categories,分类,即你的QQ好友分组,index可以看做分组表的主键,sort排序,name该组的别名。《我的好友》分组默认是index:0
friends好友,flag表示默认头像序号,后文同不提,uin是贯穿全文的参数,是在网页关闭前,浏览器客户端的唯一标识,categories对应上面分组信息
info 储存了好友的信息--昵称nick,uin对应唯一标识
marknames 备注名称,同样uin对应唯一标识,markname对应备注名称,这里要说的是,如果没有备注,在这里是不显示的
vipinfo,vip信息,无用
我建立了一个类去用于反序列化它
class JsonFriendModel
public int retcode { }
public paramResult result = new paramResult();
public class paramResult
/// 分组信息
public List categories = new List();
/// 好友汇总
public List friends = new List();
/// 好友信息
public List info = new List();
public List marknames = new List();
public class paramCategories
public string index { }
public int sort { }
public string name { }
/// 好友汇总
public class paramFriends
public string flag { }
public string uin { }
public string categories { }
/// 好友信息
public class paramInfo
public string face { }
public string nick { }
public string uin { }
public class paramMarkNames
public string uin { }
public string markname { }
上面返回的result信息,包含了4个对象,互相使用uin或者其它进行关联,使用for循环固然可以,当然有更漂亮的方法也会跟大家分享一下,如果写的不好也请大家多提意见:
var query = from f in model.result.friends
on f.uin equals i.uin into table1
from t1 in table1.DefaultIfEmpty()
join m in model.result.marknames on f.uin equals m.uin into table2
from t2 in table2.DefaultIfEmpty()
select new Friend()
Uin = f.uin,
Face = t1 == null ? string.Empty : t1.face,
Category = f.categories,
Nick = t1 == null ? string.Empty : t1.nick,
MarkName = t2 == null ? string.Empty : t2.markname
以上是使用了left join 多表进行关联查询,model即对应了返回json的result属性
地址:http://s./api/get_group_name_list_mask2
referer:http://s./proxy.html?v=&callback=1&id=1
post字符串:string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", this.VfWebQQ, this.Hash);
结构和获取好友有些类似,不同的是:群的唯一标识是gid,好友的是uin,名称不同。以下是对应的实体类:
class JsonGroupModel
public int retcode { }
public paramResult result = new paramResult();
public class paramResult
public List gnamelist = new List();
public class paramGnamelist
public string flag { }
public string gid { }
public string code { }
public string name { }
自制QQ分组控件(自己写的,凑合用=。=):点击下载
一步一步来做WebQQ机器人-(四)(获取好友列表和群列表):点击下载
本步骤的demo,一步一步来做WebQQ机器人-(四)(获取好友列表和群列表+自制QQ分组控件),更新于
可以到该系列最后一篇文章查看是否可能有最新demo
转载请保留本页链接:/lianmin/p/4237723.html
评论 - 1161
万万没想到 节操不见了 万万没想到 世界真奇妙 万万没想到 要要切克闹 万万没想到 啦啦啦啦啦

我要回帖

更多关于 获取qq群成员的qq号码 的文章

 

随机推荐