有谁知道使用 JSONP 获取 Skype 状态的 URL?
到目前为止,我只找到了一个 XML 状态 URL ( http://mystatus.skype.com/username.xml
)。
(我正在尝试使用 AJAX 查询 Skype。是的,我可以使用服务器端代理脚本来突破跨域限制,但直接调用会很棒。)
西蒙。
显然,您可以通过将扩展名更改为 .txt 来获得状态的纯文本版本:
它将返回“在线”或“离线”。关于跨域AJAX,只能通过服务器进行,绝对不允许直接调用。
您可以将标题更改为“JSONP”而不是 JSON。那正是你想要的。
JSONP 通过在 fetches 中携带数据来劫持像这样的跨域 fetches 工作,无需服务器代理。这就像我现在想到的最骇人听闻的有用技术。:)
我为此向 Skype 唠叨——最简单的方法是让他们的服务器拥有一个官方的、记录在案的 JSONP 接口。我希望他们会那样做。
同时,这就是我解决问题的方法:
将此 PHP 脚本与通常的 HTML 一起放在我的服务器上:http: //benalman.com/projects/php-simple-proxy/
像这样编辑它的配置:
$enable_native = true; $valid_url_regex = '/^http:\/\/mystatus\.skype\.com\/myuserid.*/';
这允许它(通过在服务器上运行的 curl)获取 mystatus.skype.com/myuserid.num(或 .txt)信息。
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1
而已。呸... :)
您也可以使用 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的 Bradgrafelman