网上也有不少例子,但是有些朋友遇到所谓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导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。
java导出文件文件名处理
java导出文件, freemarker导出word需要ftl文件,java导出Word常见问题。2.TXT修改后缀名为.ftl
JAVA语言开发,通过JAVA将数据文件按格式导出成SPSS文件,导出文件扩展名,SAV。
java导出oracle数据(单表)
java导出内容以及图片到execl中,由于客户的骚需求,不得不进行一些不情愿的开发。文档仅供思路参考。谢谢
使用Java导出orcale数据库dmp文件完成备份,有需要的可以直接拿过去用,缺点就是导出速度比较慢
该工具类实现java导出树形结构的方法,并未采用excel分组功能实现,而是根据树节点显示层级设置excel样式。针对easyUi,treeGrid开发的导出excel功能。方法简便实用、性强、通俗易懂。项目中亲测,no problem。
从java导出到Excel功能,具备非常好的可用性和可扩展性,实用POI写的。附详细实用说明!
java导出复杂Excel内容数据动态循环
完整的JAVA导出WORD源代码,解压即可运行
使用第三方Java工具类库Hutool的Word工具类,参考网址为https://www.hutool.cn/docs/#/poi/Word生成-Word07Writer; 2. 利用Apache POI和FreeMarker模板引擎; 3. 第三方报表工具。 上面的几种方式虽然可以实现Word...
java导出CVS,csv只是一种文件的形式。。。就是按照逗号(英文逗号)分隔的文件 它的做成跟普通的文件做成是一样一样的,只需要创建一个文件(*.csv),把字符串按照一定的格式(AAA,BBB\nCCC,DDD注意必须是英文的...
java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错
java导出例子java导出例子java导出例子java导出例子java导出例子java导出例子
java导出Excel 时候 相同行合并(可合并多列); 已测试通过;
资源描述:一个使用java做的导出数据,并且可以在excel表生成折线图的工具类,使用简单操作方便。
java word导出java word导出java word导出java word导出java word导出