星期五, 一月 22, 2010

msn 用户验证

如果希望使用msn的用户登录到,第三方系统,那么就需要使用msn的用户名和密码进行登陆.
现在使用jml的接口可以登陆到msn,但是遇到了一些问题.
先看一下怎么登陆的吧.
,现在遇到的问题是,当用户的信息读取完,成功或者失败之后程序一直是执行的状态.
messenger.logout();//退出用户
这里执行完之后,程序没有真正的退出,可以调用System.exit(0)来退出程序,但是如果是在tomcat下执行这句话能导致tomcat关闭.
所以要找一其他的办法来退出程序.否则会占用大量的系统资源.
 
----------
 
 
package com.msn;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnList;
import net.sf.jml.MsnMessenger;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.impl.MsnContactImpl;
import net.sf.jml.impl.MsnMessengerFactory;
import net.sf.jml.message.MsnSystemMessage;
/**
 * @author Roger Chen
 */
public class BasicMessenger extends MsnAdapter {
private String email;
private String password;
private MsnMessenger messenger = null;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
protected void initMessenger(MsnMessenger messenger) {
System.out.println("init");
}
public void start() {
messenger = MsnMessengerFactory.createMsnMessenger(email,
password);
messenger.setLogIncoming(false);
messenger.setLogOutgoing(false);
messenger.addListener(this);// 注册事件
initMessenger(messenger);
messenger.login();
// messenger.logout();
}
// 异常时发生
public void exceptionCaught(MsnMessenger messenger, Throwable throwable) {
msg(throwable.getMessage());
if ("incorrect password".equals(throwable.getMessage())) {
msg("用户名密码错误");
}
}
// 收到系统信息的时候发生,登录时
public void systemMessageReceived(MsnMessenger messenger,
MsnSystemMessage message) {
// System.out.print("-----" + messenger.getOwner() + "----");
}
public static void main(String[] args) throws Exception {
BasicMessenger messenger = new BasicMessenger();
messenger.setEmail("ak1@8kaopu.cn");
messenger.setPassword("aaaaaaaa1");
messenger.start();
}
@Override
public void contactListInitCompleted(MsnMessenger messenger) {
listContacts();
messenger.logout();//退出用户
//问题所在
}
// 打印联系人
@SuppressWarnings("deprecation")
private void listContacts() {
MsnContact[] cons = messenger.getContactList().getContactsInList(
MsnList.AL);
if (cons.length == 0) {
msg("空");
} else {
msg("你现在有" + cons.length + "个联系人");
}
for (int i = 0; i < cons.length; i++) {
String personal = ((MsnContactImpl) cons[i]).getPersonalMessage()
.equals("") ? "空" : ((MsnContactImpl) cons[i])
.getPersonalMessage();
msg("用户名:" + cons[i].getDisplayName() + " 地址:" + cons[i].getEmail()
+ " 状态" + cons[i].getStatus() + " " + personal);
}
// thread.socket.close();
// System.exit(0);
}
// 打印信息
private static void msg(Object obj) {
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
if (obj instanceof Throwable) {
System.err.println("[" + sdf.format(new Date()) + "] " + obj);
} else {
System.out.println("[" + sdf.format(new Date()) + "] " + obj);
}
}
}
 
 

2010-01-23
 
 
-----------
 苦读有恒 天道酬勤
 
 

0 评论: