您可以使用 JSONP 检索您的 Skype 状态吗?

发布于 2024-09-10 02:49:37 字数 233 浏览 5 评论 0原文

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

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

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

Simon .

Does anyone know of a URL to get your Skype status using JSONP?

I've only found an XML status URL so far (http://mystatus.skype.com/username.xml).

(I'm trying to query Skype using AJAX. Yes, I could use a server-side proxy script to beat the cross-domain limits, but a direct call would be awesome.)

Simon.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

酒与心事 2024-09-17 02:49:37

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

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

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

Well apparently you can get a text-only version of the status by changing the extension to .txt:

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

It will return "Online" or "Offline". About the Cross-domain AJAX, you can only do it via server and direct call is definitely not allowed.

初懵 2024-09-17 02:49:37

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

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

我向 Skype 抱怨过这一点 - 最简单的方法是让他们的服务器拥有一个官方的、记录在案的 JSONP 接口。我希望他们会这么做。

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

$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

就是这样。唷……:)

You might change the headline to 'JSONP' instead of JSON. That's what you want.

JSONP hijacks cross domain fetches like this to work, without server proxies, by carrying the data in fetches. It's like the most hackish useful technology I come to mind, right now. :)

I nagged Skype about this - the easiest way out would be for their servers to have an official, documented JSONP interface. I hope they'll do that.

In the mean time, this is how I got the problem solved:

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

This allows it to fetch (via curl running on the server) the mystatus.skype.com/myuserid.num (or .txt) information.

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

That's it. Pheeew... :)

孤芳又自赏 2024-09-17 02:49:37

您也可以使用 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 的 Bradgrafelman。 php?t=10361050

Also you can retrieve it using 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';
} 

Cheers!

Thanks to Bradgrafelman from - http://www.phpbuilder.com/board/showthread.php?t=10361050

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文