2010-07-16 31 views
4

有谁知道使用JSONP获取Skype状态的URL?您可以使用JSONP检索您的Skype状态吗?

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

(我想使用AJAX。是的,我可以用一个服务器端代理脚本击败跨域限制查询的Skype,但直接调用将是真棒。)

西蒙。

+0

看一看这里: http://bytes.com/topic/javascript/answers/699791-read-search-text-file-js相似,但抓住的东西“离线“/”在线“可能更容易。 – Sphvn 2010-07-16 01:14:50

回答

4

您可能会将标题更改为'JSONP'而不是JSON。那就是你想要的。

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

我唠唠叨叨关于这个 - 最简单的出路将是他们的服务器有一个官方的,有记录的JSONP接口。我希望他们会这样做。

在平均时间,这是我得到了解决了这个问题:放在这个PHP脚本我的服务器上,沿着通常的HTML

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

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

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

就是这样。 Pheeew ... :)

6

那么显然你可以通过改变扩展名为.txt得到状态的纯文字版本:

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

它会返回“在线”或“离线”。关于跨域AJAX,你只能通过服务器完成,绝对不允许直接调用。

+0

有趣.... – Sphvn 2010-07-16 01:07:40

+2

对我而言,无论发生什么,它都会返回“离线”。 – Evgeny 2011-12-04 16:57:54

+0

好吧,到目前为止,这是唯一的方法... – mauris 2011-12-04 17:30:40

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

干杯恢复!

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

相关问题