openfire如何获取所有在线用户
想象中如此简单的功能,想不到却这般大费周折。
如要实现,必须先确保:
1. openfire中安装有“Presence” 插件。

?
2. 确保该插件设置可允许任何人访问(如果是跨域浏览的话)

?
然后通过如下方式访问:http://www.igniterealtime.org/projects/openfire/plugins/presence/readme.html。
访问结果如下:
??
java代码:
import java.net.*;
import java.io.*;
/**
?* 判断openfire用户的状态
?* ??? strUrl : url格式 - http://my.openfire.com:9090/plugins/presence/status?jid=user1@my.openfire.com&type=xml
?*??? 返回值 : 0 - 用户不存在; 1 - 用户在线; 2 - 用户离线
?*? 说明?? :必须要求 openfire加载 presence 插件,同时设置任何人都可以访问
?*/???
public? static short IsUserOnLine(String strUrl)
{
??? short??? ??? ??? shOnLineState??? = 0;??? //-不存在-
???
??? try
??? {
??? ??? URL ??? ??? ??? oUrl ??? = new URL(strUrl);
??? URLConnection ??? oConn ??? = oUrl.openConnection();
??? if(oConn!=null)
??? {
??? ??? BufferedReader ??? oIn = new BufferedReader(new InputStreamReader(oConn.getInputStream()));
??? ??? if(null!=oIn)
??? ??? {
??? ??? ??? String strFlag = oIn.readLine();
??? ??? ??? oIn.close();
??? ??? ???
??? ??? ??? if(strFlag.indexOf("type="unavailable"")>=0)
??? ??? ??? {
??? ??? ??? ??? shOnLineState = 2;
??? ??? ??? }
??? ??? ??? if(strFlag.indexOf("type="error"")>=0)
??? ??? ??? {
??? ??? ??? ??? shOnLineState = 0;
??? ??? ??? }
??? ??? ??? else if(strFlag.indexOf("priority")>=0 || strFlag.indexOf("id="")>=0)
??? ??? ??? {
??? ??? ??? ??? shOnLineState = 1;
??? ??? ??? }
??? ??? }
??? }
??? }
??? catch(Exception e)
??? {??? ??? ???
??? }
???
??? return ??? shOnLineState;
}
?
?
转自:http://iammr.7.blog.163.com/blog/static/491026992010101635939962/
1 楼 Hyacinth1111 2012-04-14 确保该插件设置可允许任何人访问(如果是跨域浏览的话)这个怎么弄??图片看不到,急啊