导航

用WEB联接dotmsn2.0,实现获取好友列表

Posted on 2008-07-25 21:32  王国金  阅读(722)  评论(11编辑  收藏  举报

这两天看了一些交友网站,如facebook,校内,linkedin。他们在邀请网友时,实现的是直接可以导入homtmail好友列表。

今天也研究了一下,基本功能实现了,前台可以通过调用AJAX来得到这些数据。

本人现在直接输出这些好友邮箱与姓名。

 ///构造好友姓名与邮箱

 public class FriendInfo
    {
        private string username;
        private string email;
        public FriendInfo(string username, string email)
        {
            this.username = username;
            this.email = email;
        }
        public string UserName
        {
            get { return username; }
            set { username = value; }
        }
        public string Email
        {
            get { return email; }
            set { email = value; }
        }
      
    }

 

 

public class GetFriendInfo
    {
        protected   XihSolutions.DotMSN.Messenger     messenger   =   new Messenger();
        protected string xmlPath = "";
        protected AutoResetEvent are;//多线程同步信号
        IList<FriendInfo> models = new List<FriendInfo>();
        public void Connect()
        {

            try
            {
                messenger.Credentials.ClientID = "msmsgs@msnmsgr.com";
                messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
                messenger.Credentials.Account = "yours@hotmail.com";
                messenger.Credentials.Password = "password";
                if(messenger.Connected)
                    messenger.Disconnect();
                messenger.Connect();
                are.WaitOne(); //UI线程等待
            }
            catch
            {

            }

        }
        /// <summary>
        /// 获取列表开始
        /// </summary>
        public void GetFriendList()
        {
            are = new AutoResetEvent(false);
            messenger.Nameserver.SignedIn += new EventHandler(Nameserver_SignedIn);
            Connect();
          
        }
        private void Nameserver_SignedIn(object sender, EventArgs e)
        {

            try
            {
                messenger.Owner.Status = PresenceStatus.Online;
                SetFriendInfo();
                //UpdateContactlist();
              
            }
            catch
            {

            }


        }
       
        /// <summary>
        /// 填充好友列表
        /// </summary>
        private void SetFriendInfo()
        {
            try
            {
                if(messenger.Connected == false)
                    return;
                FriendInfo model = null;
                foreach(Contact contact in messenger.ContactList.Allowed)
                {
                   model = new FriendInfo(contact.Name,contact.Mail);
                   models.Add(model);
                }
                are.Set();//通知UI线程可以继续干活了。。
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 返回列表数据
        /// </summary>
        /// <returns></returns>
        public IList<FriendInfo> GetFriendListInfo()
        {
            return models;
        }

   }

///以下是aspx页面调用

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GetFriendInfo getFriendInfo = new GetFriendInfo();
                getFriendInfo.GetFriendList();
                IList<FriendInfo >model = getFriendInfo.GetFriendListInfo();
                foreach(FriendInfo info in model)
                {
                    Response.Write(info.UserName+"||"+info.Email + "<br/>");
                }
             }
         
        }

以上代码比较粗糙,希望大家能看懂。DotMSN类。可以baiadu一下直接搜索到。官网现在出的是2.02最新版