你能用JSONP检索你的Skype状态吗?

时间:2010-07-16 00:44:58

标签: ajax json api skype

有没有人知道使用JSONP获取Skype状态的网址?

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

(我正在尝试使用AJAX查询Skype。是的,我可以使用服务器端代理脚本来超越跨域限制,但直接调用会很棒。) < / p>

西蒙。

3 个答案:

答案 0 :(得分:6)

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

  

http://mystatus.skype.com/username.txt

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

答案 1 :(得分:4)

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

通过在提取中携带数据,JSONP劫持这样的跨域提取工作,没有服务器代理。这就像我现在想到的最虚伪的有用技术。 :)

我唠叨Skype这个问题 - 最简单的方法是让他们的服务器拥有一个官方的,有记录的JSONP接口。我希望他们会这样做。

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

$enable_native   = true;
$valid_url_regex = '/^http:\/\/mystatus\.skype\.com\/myuserid.*/';

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

  • 从URL获取URL:
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1

就是这样。 Pheeew ...... :)

答案 2 :(得分:3)

您也可以使用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';
}

OR

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';
} 

干杯!

感谢来自 - http://www.phpbuilder.com/board/showthread.php?t=10361050

的Bradgrafelman