网上也有不少例子,但是有些朋友遇到所谓911错误导致无法登录,isLogin=false。我对原有的代码进行了一点修改加了个等待10秒,因为发现每次登入耗时都不等,同时附上.jar包,因为个人使用中出现jar包问题导致无法登入. 修改代码如下:
package com.msn;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import rath.msnm.BuddyGroup;
import rath.msnm.BuddyList;
import rath.msnm.GroupList;
import rath.msnm.MSNMessenger;
import rath.msnm.msg.MimeMessage;
/**
* Created by IntelliJ IDEA.
* User: Eric
* Date: 2008-12-2
* Time: 14:33:20
* To change this template use File | Settings | File Templates.
*/
public class MsnFriendOut {
/**
* getGroups(String userName,String password) 查询所有的 msn 分组。
* getBuddyList(String userName,String password) 查询所有好友.(其他查询在线好友也雷同).
*
* @param args
*/
private static final Logger log = Logger.getLogger(MsnFriendOut.class);
private MSNMessenger msn = null;
public static void main(String[] args) {
MsnFriendOut ms = new MsnFriendOut();
String msnAddress = JOptionPane.showInputDialog("请输入你的MSN");
String password = JOptionPane.showInputDialog("请输入你的密码");
ms.login(msnAddress, password);
List<String> buddyList = ms.getBuddyList(msnAddress, password);
if (buddyList != null) {
for (String name : buddyList) {
System.out.println("Buddy :" + name);
}
}
}
public void setMsnMessager(String userName, String password) {
this.msn = new MSNMessenger(userName, password);
}
public MSNMessenger getMsnMessager() {
return msn;
}
/**
* Login ur msn base on username and password.
*
* @param userName
* @param password
*/
public void login(String userName, String password) {
if (msn == null)
setMsnMessager(userName, password);
try{
msn.login();
}catch(Exception e){
log.error(e);
}
}
/**
* Get all of ur msn group by username and password. (推荐)
*
* @param userName
* @param password
* @return all ur msn group .
*/
public List<String> getGroups(String userName, String password) {
if (msn == null)
setMsnMessager(userName, password);
if (!msn.isLoggedIn()) {
login(userName, password);
}
return getGroups(msn);
}
/**
* Get all of ur buddy by username and password. (推荐)
*
* @param userName
* @param password
* @return All the buddy
*/
public List<String> getBuddyList(String userName, String password) {
if (msn == null)
setMsnMessager(userName, password);
login(userName, password);
while(!msn.isLoggedIn()){
login(userName, password);
try {
Thread.currentThread().sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("isLogin:"+ msn.isLoggedIn());
}
return getBuddyList(msn);
}
/**
* Get all of ur buddy group by MSNMessage.(不推荐)
*
* @param msn
* @return
*/
public List<String> getGroups(MSNMessenger msn) {
if (msn == null)
return null;
if (!msn.isLoggedIn()) {
log.warn("Please set the MSNMessge");
msn.login();
}
BuddyGroup buddyGroup = msn.getBuddyGroup();
GroupList groupList = buddyGroup.getGroupList();
Iterator groupIterm = groupList.iterator();
List list = null;
while (groupIterm.hasNext()) {
list = (list == null) ? new ArrayList() : list;
list.add(groupIterm.next().toString());
}
return list;
}
/**
* Get all of ur buddy by MSNMessage.(不推荐,)
*
* @param msn
* @return
*/
public List<String> getBuddyList(MSNMessenger msn) {
if (msn == null) {
log.warn("Please set the MSNMessge");
return null;
}
if (!msn.isLoggedIn()) {
msn.login();
return null;
}else{
BuddyGroup buddyGroup = msn.getBuddyGroup();
BuddyList buddyList = buddyGroup.getForwardList();
List list = null;
// check.
if (buddyList == null || buddyList.size() < 1)
return null;
for (int i = 0; i < buddyList.size(); i++) {
list = (list == null) ? new ArrayList() : list;
String fname = buddyList.get(i).getLoginName();
list.add(fname);
}
MimeMessage msg = new MimeMessage();
msg.setMessage("测试");
try {
boolean sendOk = msn.sendMessage("*****@hotmail.com", msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
}
分享到:
相关推荐
根据前台表样已定义好的高级表格,而当前表格的HeaderColumn部份为高级分组,即多层分组列,将我们前所见即所得,点击导出按钮后,直接根据数据的逻辑,自动生成了多层组表的表头部份数据样式。 文件夹中附有源代码...
本话题主要探讨如何使用Java程序导出MySQL数据库中的数据。以下将详细讲解相关概念和技术。 首先,导出MySQL数据最常用的方式是通过命令行工具`mysqldump`。`mysqldump`是一个实用程序,它能备份MySQL数据库,生成...
在本资源中,我们将讨论如何使用 Java 语言导出 Oracle 数据库中的单表数据。该资源提供了一个完整的示例代码,展示了如何使用 Java 语言连接 Oracle 数据库,执行导出操作,并处理可能出现的错误。 知识点 1:Java...
本文将详细讲解如何使用Java实现Word文件的导出,并结合提供的资源进行解析。 首先,Java导出Word文件通常有两种方式:一是使用Apache POI库,二是使用JODConverter库。Apache POI是广泛使用的开源库,它允许Java...
以上是关于"java导出数据为sav格式"的详细知识,涵盖从Java编程到SPSS数据格式,再到Maven私服的使用,希望对理解和实现该功能有所帮助。在实际应用中,还需要注意数据的正确性、错误处理以及性能优化等问题。
- 有了数据记录和元数据,就可以使用Java的二进制输出流(如FileOutputStream)来写入SPSS文件的二进制格式。 - 按照SPSS文件的结构,先写入元数据,然后是数据记录。每个变量的值按照它们在数据结构中的顺序写入...
java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。
今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 Java POI导出图片到Excel示例代码,标题表明了本文的主要内容,即使用Java POI将图片导出到Excel中。 描述解释 描述中提到了本文的主要内容,...
在Java编程中,导出数据到Excel是一种常见的需求,尤其当需要将图片与文本一起展示在电子表格中时。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并未提供直接支持图像到Excel的功能。以下是一些...
本文将详细讲解如何使用Java实现Word文档的导出,并着重介绍涉及的库和关键技术。 首先,标题"JAVA 导出WORD"指的是使用Java语言编写程序来生成或导出Microsoft Word文档。在Java中,没有内置的API直接支持Word文档...
在Java编程中,导出Excel是一项常见的任务,特别是在数据分析、报表生成或数据交换等领域。而带图片的Excel导出则增加了复杂性,因为涉及到二进制数据的处理和Excel特定格式的支持。以下是一些关于如何在Java中实现...
java示例代码,导出pdf文件,加签;可以实现导出pdf的图片签名;导出图片,文件,内容.纯后端代码,代码示例 在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf...
Java编程语言在处理文档转换方面提供了强大的支持,...综上所述,"java导出docx导出pdf"的项目提供了一个Java解决方案,通过利用Apache POI和iText库,实现了从Docx到PDF的快速转换,适用于各种需要文档转换的场景。
本文将介绍如何使用 Java 语言将 Oracle 数据库数据导出到文件中,并将其导入到 Oracle 数据库中。 从标题和描述中可以看到,本文的主要内容是使用 Java 语言将 Oracle 数据库数据导出到文件中,并将其导入到 ...
本文将详细介绍如何使用Java来创建和导出PPT,以一个简单例子为引导。 首先,我们需要引入能够处理PPT的Java库。Apache POI是一个广泛使用的开源库,它提供了读取、写入Microsoft Office格式文件的能力,包括PPTX...
### Java导出文件名处理详解 在Java Web开发过程中,经常需要实现文件的导出功能。这涉及到将数据从服务器端导出为特定格式的文件(如Excel、PDF等),并提供给用户下载。在这个过程中,正确处理文件名是非常重要的...
本篇文章将深入探讨如何使用Apache POI创建一个Java工具类来实现高效且灵活的Excel导出功能。 首先,我们需要了解Apache POI的基本用法。Apache POI提供了两种主要的API用于处理Excel文件:HSSF(用于旧版的.xls...
我们在项目当中经常要导出pdf文档,pdf文档还要按一定的格式导出,以下介绍导出pdf文档功能: 1)支持A4纸大小导出 2)指定文字显示的位置 3)支持表格展示数据 4)添加水印 5)代码全开源,在多个项目中使用,放心...
该工具类实现java导出树形结构的方法,并未采用excel分组功能实现,而是根据树节点显示层级设置excel样式。针对easyUi,treeGrid开发的导出excel功能。方法简便实用、性强、通俗易懂。项目中亲测,no problem。