Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 您可以使用JSONP检索您的Skype状态吗?_Ajax_Json_Api_Skype - Fatal编程技术网

Ajax 您可以使用JSONP检索您的Skype状态吗?

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

有人知道使用JSONP获取Skype状态的URL吗

到目前为止,我只找到了一个XML状态URL(
http://mystatus.skype.com/username.xml

(我正在尝试使用AJAX查询Skype。是的,我可以使用服务器端代理脚本来突破跨域限制,但是直接调用就太棒了。)


Simon.显然,通过将扩展名更改为.txt,您可以获得状态的纯文本版本:


它将返回“在线”或“离线”。关于跨域AJAX,您只能通过服务器执行,并且绝对不允许直接调用。

您可以将标题改为“JSONP”而不是JSON。这就是你想要的

JSONP通过在抓取中携带数据,在没有服务器代理的情况下劫持这样的跨域抓取。这是我现在想到的最有黑客感的有用技术

我一直在抱怨Skype——最简单的解决方法就是让他们的服务器拥有一个正式的、有文档记录的JSONP接口。我希望他们会那样做

同时,这就是我解决问题的方法:

  • 将此PHP脚本放在我的服务器上,与常见的HTML放在一起:

  • 编辑了它的配置,如下所示:

这允许它获取(通过服务器上运行的curl)mystatus.skype.com/myuserid.num(或.txt)信息

  • 正在使用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';
}