我正在尝试使用oEmbed来测试Youtube或Vimeo视频是否存在。我的代码在Youtube上运行良好,但在Vimeo上不起作用,即使我遵循了Vimeo的oEmbed官方文档和那里提供的示例。为什么我的代码不适用于Vimeo?我收到Youtube的服务器响应200,但Vimeo的服务器响应0。我的代码是:
<?php
//Problematic case: I get 0 as a server reponse
$cURL = curl_init("https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/76979871");
// Youtube case - works fine: server response = 200
// $cURL = curl_init("http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=ebXbLfLACGM");
// Set option 1: return the result as a string
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
// Set option 2: Follow any redirect
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
// Execute the query
$cURLresult = curl_exec($cURL);
// Get the HTTP response code
$response = curl_getinfo($cURL, CURLINFO_HTTP_CODE);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Server response</title>
</head>
<body>
<h1><?php print "Server response: " . $response; ?></h1>
</body>
</html>
问题来自于使用localhost连接到Vimeo。Localhost适用于Youtube,但不适用于Vimeo。按照另一位成员的建议,我在一个真实的服务器上测试了上面的脚本,一切都很好。
历史的寓意:总是在真实的服务器中测试有问题的外部连接,而不是在本地主机上。