Ajax 您可以使用JSONP检索您的Skype状态吗?
有人知道使用JSONP获取Skype状态的URL吗 到目前为止,我只找到了一个XML状态URL(Ajax 您可以使用JSONP检索您的Skype状态吗?,ajax,json,api,skype,Ajax,Json,Api,Skype,有人知道使用JSONP获取Skype状态的URL吗 到目前为止,我只找到了一个XML状态URL(http://mystatus.skype.com/username.xml) (我正在尝试使用AJAX查询Skype。是的,我可以使用服务器端代理脚本来突破跨域限制,但是直接调用就太棒了。) Simon.显然,通过将扩展名更改为.txt,您可以获得状态的纯文本版本: 它将返回“在线”或“离线”。关于跨域AJAX,您只能通过服务器执行,并且绝对不允许直接调用。您可以将标题改为“JSONP”而不是JS
http://mystatus.skype.com/username.xml
)
(我正在尝试使用AJAX查询Skype。是的,我可以使用服务器端代理脚本来突破跨域限制,但是直接调用就太棒了。)
Simon.显然,通过将扩展名更改为.txt,您可以获得状态的纯文本版本:
它将返回“在线”或“离线”。关于跨域AJAX,您只能通过服务器执行,并且绝对不允许直接调用。您可以将标题改为“JSONP”而不是JSON。这就是你想要的 JSONP通过在抓取中携带数据,在没有服务器代理的情况下劫持这样的跨域抓取。这是我现在想到的最有黑客感的有用技术 我一直在抱怨Skype——最简单的解决方法就是让他们的服务器拥有一个正式的、有文档记录的JSONP接口。我希望他们会那样做 同时,这就是我解决问题的方法:
- 将此PHP脚本放在我的服务器上,与常见的HTML放在一起:
- 编辑了它的配置,如下所示:
- 正在使用URL从JS获取:
就这样。呸……:) 您还可以使用PHP检索它
function getSkypeStatus($username) {
$data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
return strpos($data, '<presence xml:lang="en">Offline</presence>') ? 'Offline' : 'Online';
}
函数getSkypeStatus($username){
$data=文件\u获取\u内容('http://mystatus.skype.com/“.urlencode($username)。”.xml');
返回strpo($data,'Offline')?'Offline':'Online';
}
或
函数getSkypeStatus($username){
$data=文件\u获取\u内容('http://mystatus.skype.com/“.urlencode($username)。”.xml');
preg_match('@(.*)@i',$data,$match);
返回isset($match[1])?$match[1]:“检索状态时出错”;
}
干杯
感谢来自-的Bradgrafelman,请看这里:类似的东西,但获取“脱机”/“联机”可能会更容易。对我来说,无论发生什么情况,它都会返回“脱机”。@Evgeny:在Skype设置中,在“隐私”下,是否允许在web上显示您的状态?
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1
function getSkypeStatus($username) {
$data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
return strpos($data, '<presence xml:lang="en">Offline</presence>') ? 'Offline' : 'Online';
}
function getSkypeStatus($username) {
$data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
preg_match('@<presence xml:lang="en">(.*?)</presence>@i', $data, $match);
return isset($match[1]) ? $match[1] : 'Error retrieving status';
}