« javascript如何去掉字符串首尾的空格,相当手VB里的trim功能« »javascript数据类型转换,取整方法 »
JMSN-MSNM-LIB如何获得好友列表,主动向好友发送消息的方法
在做MSN中,想要获得好友列表,可是却怎么也找不到方法,哎,没办法,JMSN是韩国人做的,写的文档不是中文,也不是英文,没法看啊,好烦,为了找这样一个方法,浪费了两天了,还是没有什么进展,在google上混了好久,哎,还是换回到百度上找找,嘿嘿,你别说,还真找到了几个相关的,真是没想到.不过,还没验证找到的资料行不行,现在是上班时间,先收藏下,晚上回去试试再说.

怎么读取当前在线的好友列表,资料所在地:http://access911.net/n/doc1.asp?mode=a&aid=4932535
在JMSN\BuddyTree.java文件中
public void userOnline( final MsnFriend friend )
        {
        final String loginName = friend.getLoginName();
        final String formatStatus = UserStatusBox.getFormattedUserStatus(friend.getStatus());
        final String formatName = friend.getFormattedFriendlyName();

        SwingUtilities.invokeLater( new Runnable() {
        public void run() {
        DefaultMutableTreeNode node = findTreeNode(friend);

        BuddyList list = msnm.getBuddyGroup().getForwardList();
        MsnFriend old = list.get( loginName );

//         扁粮俊 乐菌绊, 惑怕父 函版窍看阑 版快(捞傈惑怕啊 OFFLINE捞 酒囱版快)
        if( node!=null && !UserStatus.OFFLINE.equals(old.getOldStatus()) )
        {
        main.addEvent( formatStatus + " " + formatName +
        " (" + loginName + ")", friend );
        old.setFriendlyName( friend.getFriendlyName() );
        old.setStatus( friend.getStatus() );
        node.setUserObject( old );

        node.removeFromParent();
        DefaultMutableTreeNode group = findGroupNode( old.getGroupIndex() );
        insertPreferredIndex( group, old, node );

        model.reload( group );
        }
//         扁粮俊 绝菌芭唱, 乐菌绰单 坷橇扼牢捞看阑 版快
        else
        {
        if( node==null )
        {
        friend.setGroupIndex( old.getGroupIndex() );
        node = new DefaultMutableTreeNode(friend);

        DefaultMutableTreeNode group = findGroupNode(friend.getGroupIndex());
        insertPreferredIndex( group, friend, node );
        model.reload( group );
        }
        else
        {
        node.removeFromParent();
            node.setUserObject( friend );

        DefaultMutableTreeNode group = findGroupNode(friend.getGroupIndex());
        insertPreferredIndex( group, friend, node );
        model.reload( group );
        }
        refreshGroupNode();

        main.addEvent( Msg.get("event.login", loginName, formatName), friend );
        MusicBox.play( MusicBox.SOUND_LOGIN );
        }
        }});
        }
另一个人的回答:
        void syncAllUsers() {
            if (root == null || model == null)
                return;
            root.removeAllChildren();

            for (Iterator i = groupMap.values().iterator(); i.hasNext();) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) i.next();
                node.removeAllChildren();
            }
            groupMap.clear();
            // // /上面清空了好友列表,下面获得并添加好友分组
            GroupList gl = msnm.getBuddyGroup().getGroupList();
            gl.sort();
            for (Iterator i = gl.iterator(); i.hasNext();) {
                Group group = (Group) i.next();
                DefaultMutableTreeNode node = new DefaultMutableTreeNode(group);
                root.add(node);
                groupMap.put(group.getIndex(), node);
            }

            // // /在这里获得并添加所有好友
            // // 想得到好友列表? 在这里得添加 String loginNames = new String("");
            BuddyList bl = msnm.getBuddyGroup().getForwardList();
            bl.sort(comparator);
            for (Iterator i = bl.iterator(); i.hasNext();) {
                MsnFriend friend = (MsnFriend) i.next();
                // ////// 想获得好友列表的STRING???? 你从程序中可以看出,好友列表其实是每个好友单独处理的
                // //// /如果想得到一个"好友1+好友2..."这样的字串,自己在这里添加代码吧
                // //// 另外,别奢望脱离这个框架,只用几行代码就完成这事,那样你得和作者联系.
                loginNames = loginNames + "+" + friend.getLoginName();
                // ////////////// /

                if (!offView && friend.getStatus().equals(UserStatus.OFFLINE))
                    continue;
                DefaultMutableTreeNode node = findGroupNode(friend
                        .getGroupIndex());
                DefaultMutableTreeNode fnode = new DefaultMutableTreeNode(
                        friend);
                node.add(fnode);
            }
            model.reload();

            recoverExpandState();
        }


   主动向好友发送消息的方法
     messenger.doCall("aaaa@hotmail.com");  
        boolean   flag   =   false;  
        while(!flag)  
        {  
            flag   =   messenger.sendMessage("aaaa@hotmail.com",mime);  
        } 

在http://www.javatx.cn/clubPage.jsp?ccID=18&tID=1053&ccStyle=0&iPage=1这里也找到了一些资料,如下:
        MSNMessenger messenger = new MSNMessenger(getUserName(), getPassword());
        messenger.setInitialStatus(UserStatus.OFFLINE);
        messenger.login();

        List      mailList = new ArrayList();
        BuddyList list = messenger.getBuddyGroup().getAllowList();

        for (Iterator iter = list.iterator(); iter.hasNext();) {
            MsnFriend friend = (MsnFriend) iter.next();
            System.out.println(friend.getLoginName());
            mailList.add(friend.getLoginName());
        }
        messenger.logout();


另外,在CSDN里也能找到一些东西,(http://search.csdn.net/里搜索jmsn,有好多).不过,重复的东西太多了,哎,而且,有用的也不多,质量啊..........

java往msn发消息的功能(http://topic.csdn.net/u/20070718/18/39f19276-0d1a-4f23-a498-0c0fcfb5b8ac.html)
        // 去下载 jmsn包;

        public class JMsnTest extends Thread {
            private static MSNMessenger msn;

            public static void main(String[] args) {
                msn = new MSNMessenger("msn@yahoo.com.cn ", "mima "); // 发送人
                // msn.setInitialStatus(UserStatus.ONLINE);
                msn.addMsnListener(new MSNAdapter(msn));
                msn.login();

                MimeMessage me = new MimeMessage("ok ");
                me.setKind(MimeMessage.KIND_MESSAGE);

                try {
                    Thread.currentThread().sleep(1500);
                    msn.doCall("lvchuang47@yahoo.com.cn "); // 接收人
                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out
                        .println("Waiting       for       the       response.... ");
                Runtime.getRuntime().addShutdownHook(new JMsnTest());

            }

            public void run() {
                msn.logout();
                System.out.println("MSN       Logout       OK ");
            }
        }

        class MSNAdapter extends MsnAdapter {
            MSNMessenger messenger;

            public MSNAdapter(MSNMessenger messenger) {
                this.messenger = messenger;
            }

            public void switchboardSessionStarted(
                    SwitchboardSession switchboardsession) {
                MimeMessage hello = new MimeMessage("hello ");
                hello.setKind(MimeMessage.KIND_MESSAGE);
                try {
                    boolean sendok = messenger.sendMessage(hello,
                            switchboardsession);
                    switchboardsession.sendMessage(hello);
                    System.out.println("sendok       =       " + sendok);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
//Thread.currentThread().sleep(1500);
//是等待登录的时间,不设置   容易发不出去

 


Tags: MSN  QQ  机器人   |

原创文章如转载,请注明:转载自:巴士飞扬-技术BLOG : http://www.busfly.net/

本文链接地址:http://www.busfly.net/post/JMSN-MSNM-LIB-friends.html

如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~

     
相关文章:
  • 引用此留言  6.A絲  
  • 請問一下
    關於jmsn的斷線錯誤(Exception) 可以在哪個class中找到呢?
  • [删除]2010-7-12 22:01:32 回复该留言
  • 引用此留言  4.xue  http://rd-program.blogspot.com
  • 3分鐘學會使用程式發送msn訊息,php篇(一)
    http://rd-program.blogspot.com/2008/11/5msnphp.html

    3分鐘學會使用程式發送msn訊息,dotNet C#篇(二)
    http://rd-program.blogspot.com/2008/11/3msn-net-c.html

    3分鐘學會使用程式發送msn訊息, Java篇(三)
    http://rd-program.blogspot.com/2008/11/3msn-java.html
  • [删除]2008-11-12 19:12:41 回复该留言
  • 引用此留言  3.pj  
  • 顶,谢谢,我遇到了和 巴士飞扬相同的问题,无法获得好友列表,不知您有什么解决方法吗?
  • [删除]2008-10-28 15:08:35 回复该留言
  • 引用此留言  2.yangming  
  • BuddyList buddyList = buddyGroup.getForwardList();
    for(int i=0;i<buddyList.size();i++){
    MsnFriend friend = buddyList.get(i);
    System.out.println( friend.getFriendlyName());
    }
    buddyGroup.getForwardList() 可以获得 好友列表
    巴士飞扬 于 2007-11-23 12:47:08 回复
    文章里也提到了这个方法
    巴士飞扬 于 2007-11-23 12:48:30 回复
    不过发现一个问题,就是,我在登录成功的消息里使用这种方法获取好友列表时,不能成功

    另外就是不知道如何获取好友分组,不知道你会不会
  • [删除]2007-11-23 12:48:30 回复该留言




◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
网站分类
分类最近文章
最近发表
最新评论及回复
最近留言
热文排行
随机推荐文章
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(J2EE为主):3769186.