获取QQ在线状态,显示相应动画或图片,并发起会话
作者:Rogiture 日期:2007-07-22
我们都知道,腾讯有提供
在线状态图片风格
也有提供在线 发起会话的接口。
但是,他所提供的在线状态图片风格,实在不能与你要求制作精美的网页完全融合。
这感觉,就像美丽的都市中随意张贴的泌尿系统广告一样,令人作呕。
所以,我们有必要做自己的在线图片风格,或者动画。
本人有意中发现了这个接口( http://webpresence.qq.com/getonline?Type=1&154160595:)。
话题围绕它而展开。
新建个Flash文档,打开动作面板,在主场景第一帧写上如下代码:
程序代码
按Ctrl+Enter看结果吧。
原文件下载。
效果预览:
Flash动画
因Flash Player安全协议的原因,
在你的域中,无法直接访问 http://webpresence.qq.com/getonline?Type=1&154160595:
因为webpresence.qq.com可没有允许你访问的crossdomain.xml策略文件。
定义自己的查询QQ在线状态Get_qqOnLine.asp文件。
程序代码
发送请求: http://webpresence.qq.com/getonline?Type=1&154160595: 为查询单个QQ号码。
发送请求: http://webpresence.qq.com/getonline?Type=1&154160595:10000: 以此类推,为查询多个QQ号码。
它的返回值1为在线,0为离线。另外,离开状态它视为在线,隐身状态它视为离线。
你可以在浏览器中输入url直接查看。
好了,去撕掉你网页中的牛皮癣吧。
也有提供在线 发起会话的接口。
但是,他所提供的在线状态图片风格,实在不能与你要求制作精美的网页完全融合。
这感觉,就像美丽的都市中随意张贴的泌尿系统广告一样,令人作呕。
所以,我们有必要做自己的在线图片风格,或者动画。
本人有意中发现了这个接口( http://webpresence.qq.com/getonline?Type=1&154160595:)。
话题围绕它而展开。
新建个Flash文档,打开动作面板,在主场景第一帧写上如下代码:

//创建个动态文本,用于输入QQ号码
this. createTextField( "qq_txt", 100, 50, 20, 150, 20);
//文本为输入文本
qq_txt. type = "input";
//文本有边框
qq_txt. border = true;
//文本只能输入0-9的数字与":"
qq_txt. restrict = "0-9:";
//
//再创建个文本,用于点击查询
this. createTextField( "s_txt", 101, 210, 20, Stage. width, 20);
//文本支持html标签
s_txt. html = true;
//设定显示文字以及点击事件
s_txt. htmlText = "<font color='#990000'><a href='asfunction:getOnLine'>点此查询QQ在线状态</a></font> (多个QQ号请用单个/":/"隔开)";
//
//再创建个文本用于显示查询结果
this. createTextField( "x_txt", 102, 0, 50, Stage. width, 20);
//文本支持html标签
x_txt. html = true;
//文本居中对齐
x_txt. autoSize = "center";
//文本为多行
x_txt. multiline = true;
//
//申明一个数组,用于记录查询的QQ号
var list_ay: Array = new Array();
/*
*/
//查询qq在线状态,根据查询结果,显示在线状态
function getOnLine():Void {
var get_lv: LoadVars = new LoadVars();
get_lv. onLoad = function(success: Boolean):Void {
//得到查询结果
if (success) {
//转义十六进制序列字符串,得到Get_qqOnLine.asp传回的值
var s: String = unescape(get_lv.onLineList);
//记录结果
var qqOnLineList: String = "";
//得出共传回了几个查询结果
var sum: Number = s. split( "="). length-1;
//循环显示查询结果
for ( var i: Number = 0; i<sum; i++) {
var nK: Number = s. indexOf( "=");
var sK: String = s. substr(nK+1);
var nJ: Number = sK. indexOf( ";");
s = sK. substr(nJ+1);
var onLine: String = sK. substr(0, nJ);
//如果在线
if (onLine == "1") {
qqOnLineList += "你所查询的QQ:"+list_ay[i]+ " 目前在线,<font color='#FF0000'><a href='tencent://message/?uin="+list_ay[i]+ "&Site=我在FLash中与你发起了会话&Menu=yes' target='_blank'>[ 点此发起会话 ]</a></font>/n";
//如果不在线
} else {
qqOnLineList += "你所查询的QQ:"+list_ay[i]+ " 目前不在线,<font color='#FF0000'><a href='tencent://message/?uin="+list_ay[i]+ "&Site=我在FLash中与你发起了会话&Menu=yes' target='_blank'>[ 点此给TA留言 ]</a></font>/n";
}
}
//显示结果
x_txt. htmlText = qqOnLineList;
//
//查询的QQ有错误
} else {
x_txt. htmlText = "<font color='#FF0000'>Get_qqOnLine.asp或你所输入的QQ号有错误!/n/t请重新输入。</font>";
}
};
//以单个":"为分隔符,拆分成数组,存入list_ay数组
list_ay = qq_txt. text. split( ":");
//禁止读缓存
get_lv.n = random(9999);
//POST参数qqList
get_lv.qqList = qq_txt. text+ ":";
//调用Get_qqOnLine.asp查询QQ在线状态
get_lv. sendAndLoad( "http://www.rogiture.com/Demo/Get_qqOnLine/Get_qqOnLine.asp", get_lv, "POST");
}
//
qq_txt. text = "154160595:10000:123456";
this. createTextField( "qq_txt", 100, 50, 20, 150, 20);
//文本为输入文本
qq_txt. type = "input";
//文本有边框
qq_txt. border = true;
//文本只能输入0-9的数字与":"
qq_txt. restrict = "0-9:";
//
//再创建个文本,用于点击查询
this. createTextField( "s_txt", 101, 210, 20, Stage. width, 20);
//文本支持html标签
s_txt. html = true;
//设定显示文字以及点击事件
s_txt. htmlText = "<font color='#990000'><a href='asfunction:getOnLine'>点此查询QQ在线状态</a></font> (多个QQ号请用单个/":/"隔开)";
//
//再创建个文本用于显示查询结果
this. createTextField( "x_txt", 102, 0, 50, Stage. width, 20);
//文本支持html标签
x_txt. html = true;
//文本居中对齐
x_txt. autoSize = "center";
//文本为多行
x_txt. multiline = true;
//
//申明一个数组,用于记录查询的QQ号
var list_ay: Array = new Array();
/*
*/
//查询qq在线状态,根据查询结果,显示在线状态
function getOnLine():Void {
var get_lv: LoadVars = new LoadVars();
get_lv. onLoad = function(success: Boolean):Void {
//得到查询结果
if (success) {
//转义十六进制序列字符串,得到Get_qqOnLine.asp传回的值
var s: String = unescape(get_lv.onLineList);
//记录结果
var qqOnLineList: String = "";
//得出共传回了几个查询结果
var sum: Number = s. split( "="). length-1;
//循环显示查询结果
for ( var i: Number = 0; i<sum; i++) {
var nK: Number = s. indexOf( "=");
var sK: String = s. substr(nK+1);
var nJ: Number = sK. indexOf( ";");
s = sK. substr(nJ+1);
var onLine: String = sK. substr(0, nJ);
//如果在线
if (onLine == "1") {
qqOnLineList += "你所查询的QQ:"+list_ay[i]+ " 目前在线,<font color='#FF0000'><a href='tencent://message/?uin="+list_ay[i]+ "&Site=我在FLash中与你发起了会话&Menu=yes' target='_blank'>[ 点此发起会话 ]</a></font>/n";
//如果不在线
} else {
qqOnLineList += "你所查询的QQ:"+list_ay[i]+ " 目前不在线,<font color='#FF0000'><a href='tencent://message/?uin="+list_ay[i]+ "&Site=我在FLash中与你发起了会话&Menu=yes' target='_blank'>[ 点此给TA留言 ]</a></font>/n";
}
}
//显示结果
x_txt. htmlText = qqOnLineList;
//
//查询的QQ有错误
} else {
x_txt. htmlText = "<font color='#FF0000'>Get_qqOnLine.asp或你所输入的QQ号有错误!/n/t请重新输入。</font>";
}
};
//以单个":"为分隔符,拆分成数组,存入list_ay数组
list_ay = qq_txt. text. split( ":");
//禁止读缓存
get_lv.n = random(9999);
//POST参数qqList
get_lv.qqList = qq_txt. text+ ":";
//调用Get_qqOnLine.asp查询QQ在线状态
get_lv. sendAndLoad( "http://www.rogiture.com/Demo/Get_qqOnLine/Get_qqOnLine.asp", get_lv, "POST");
}
//
qq_txt. text = "154160595:10000:123456";
按Ctrl+Enter看结果吧。

效果预览:

因Flash Player安全协议的原因,
在你的域中,无法直接访问 http://webpresence.qq.com/getonline?Type=1&154160595:
因为webpresence.qq.com可没有允许你访问的crossdomain.xml策略文件。
定义自己的查询QQ在线状态Get_qqOnLine.asp文件。

<%@LANGUAGE
=
"VBSCRIPT" CODEPAGE
=
"936"
%
>
< %
'获取QQ在线信息
Function GetURL (url )
Set Retrieval = Server .CreateObject ( "Microsoft.XMLHTTP" )
With Retrieval
.Open "GET" , url , False , "" , ""
.Send
Response .Write "onLineList=" & .ResponseText
End With
Set Retrieval = Nothing
End Function
GetURL ( "http://webpresence.qq.com/getonline?Type=1&" &Request ( "qqList" ) )
%>
< %
'获取QQ在线信息
Function GetURL (url )
Set Retrieval = Server .CreateObject ( "Microsoft.XMLHTTP" )
With Retrieval
.Open "GET" , url , False , "" , ""
.Send
Response .Write "onLineList=" & .ResponseText
End With
Set Retrieval = Nothing
End Function
GetURL ( "http://webpresence.qq.com/getonline?Type=1&" &Request ( "qqList" ) )
%>
发送请求: http://webpresence.qq.com/getonline?Type=1&154160595: 为查询单个QQ号码。
发送请求: http://webpresence.qq.com/getonline?Type=1&154160595:10000: 以此类推,为查询多个QQ号码。
它的返回值1为在线,0为离线。另外,离开状态它视为在线,隐身状态它视为离线。
你可以在浏览器中输入url直接查看。
好了,去撕掉你网页中的牛皮癣吧。