2010-07-16 61 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

相關問題