Ejemplo n.º 1
0
        /**
         * 构造方法,初始化模块和服务
         * 账号/密码    监听器     线程执行器
         *
         * @param username a {@link java.lang.String} object.
         * @param password a {@link java.lang.String} object.
         * @param notifyListener a {@link iqq.im.QQNotifyListener} object.
         * @param actorDispatcher a {@link iqq.im.actor.ThreadActorDispatcher} object.
         */
        public WebQQClient(
            QQNotifyListener notifyListener, ThreadActorDispatcher actorDispatcher)
        {
            this.modules = new Dictionary <AbstractModule.Type, AbstractModule>();

            this.modules.Add(AbstractModule.Type.LOGIN, new LoginModule());
            this.modules.Add(AbstractModule.Type.PROC, new ProcModule());
            this.modules.Add(AbstractModule.Type.USER, new UserModule());
            this.modules.Add(AbstractModule.Type.BUDDY, new BuddyModule());
            this.modules.Add(AbstractModule.Type.CATEGORY, new CategoryModule());
            this.modules.Add(AbstractModule.Type.GROUP, new GroupModule());
            this.modules.Add(AbstractModule.Type.CHAT, new ChatModule());
            //this.modules.Add(AbstractModule.Type.DISCUZ, new DiscuzModule());
            //this.modules.Add(AbstractModule.Type.EMAIL, new EmailModule());

            //this.modules.Add(AbstractModule.Type.QM_LOGIN, new QmLoginModule());
            //this.modules.Add(AbstractModule.Type.QM_PROC, new QmProcModule());
            //this.modules.Add(AbstractModule.Type.QM_MGR, new QmMgrModule());

            //this.modules.Add(AbstractModule.Type.WB_LOGIN, new WbLoginModule());
            //this.modules.Add(AbstractModule.Type.WB_PROC, new WbProcModule());

            this.service = new ApacheHttpService();

            this.session         = new QQSession();
            this.store           = new QQStore();
            this.notifyListener  = notifyListener;
            this.actorDispatcher = actorDispatcher;

            this.init();
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            var       threadActorDispatcher = new ThreadActorDispatcher();
            IQQClient client = null;

start:
            Console.Write("请输入QQ号:");
            var username = Console.ReadLine();

            Console.Write("请输入QQ密码:");
            var password = Console.ReadLine();

            client = new WebQQClient(username, password, handler, threadActorDispatcher);


            //测试同步模式登录
            var future = client.Login(QQStatus.ONLINE, null);

            Console.WriteLine(client.Account.Username + "-登录中......");

            var Event = future.WaitFinalEvent();

            if (Event.Type == QQActionEventType.EVT_OK)
            {
                Console.WriteLine(client.Account.Username + "-登录成功!!!!");

                var getUserInfoEvent = client.GetUserInfo(client.Account, null).WaitFinalEvent();

                if (getUserInfoEvent.Type == QQActionEventType.EVT_OK)
                {
                    Console.WriteLine(client.Account.QQ + "-用户信息:" + getUserInfoEvent.Target);


                    client.GetBuddyList(null).WaitFinalEvent();
                    Console.WriteLine(client.Account.QQ + "-Buddy count: " + client.GetBuddyList().Count);

                    foreach (var buddy in client.GetBuddyList())
                    {
                        var f    = client.GetUserQQ(buddy, null);
                        var e    = f.WaitFinalEvent();
                        var name = string.IsNullOrEmpty(buddy.MarkName) ? buddy.Nickname : buddy.MarkName;
                        Console.WriteLine("{0}, {1}", buddy.QQ, name);
                    }
                }
                //所有的逻辑完了后,启动消息轮询
                client.BeginPollMsg();
            }
            else if (Event.Type == QQActionEventType.EVT_ERROR)
            {
                var ex = (QQException)Event.Target;
                Console.WriteLine(ex.Message);
                client.Destroy();
                goto start;
            }
            else
            {
                Console.WriteLine(client.Account.Username + "-登录失败");
                client.Destroy();
                goto start;
            }

            Console.WriteLine("按任意键退出");
            Console.ReadLine();
        }