代码之家  ›  专栏  ›  技术社区  ›  Simon E. pbs

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

  •  4
  • Simon E. pbs  · 技术社区  · 15 年前

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

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

    西蒙。

    3 回复  |  直到 12 年前
        1
  •  4
  •   akauppi    15 年前

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

    JSONP通过在fetches中携带数据,在没有服务器代理的情况下劫持这样的跨域fetch来工作。这是我现在想到的最实用的技术

    我对Skype唠叨了一番——最简单的解决办法就是让他们的服务器有一个正式的、有文档记录的JSONP接口。我希望他们会那样做。

    同时,我也是这样解决问题的:

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

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

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

        2
  •  6
  •   mauris    15 年前

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

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

    它将返回“在线”或“离线”。关于跨域AJAX,你只能通过服务器来实现,直接调用是绝对不允许的。

        3
  •  3
  •   foxybagga    14 年前

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

    或者

    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