0

好的,所以我想要实现的是使用 youtube api 来获取一些提要。提要是 json-c 编码的。所以我尝试使用 file_get_contents 方法将 json feedurl 转换为字符串并进行 json 解码。这是代码片段:

$feedURL = "https://gdata.youtube.com/feeds/api/videos?q=surfing&v=2&alt=jsonc";
$json = file_get_contents($feedURL,0,null,null);
$result = json_decode($json, true);
echo $result;
$id = $result->{'data'}->{'items'}[0]->{'id'};
echo "The video id is: ".$id;

但我收到这个愚蠢的错误警告:file_get_contents(https://gdata.youtube.com/feeds/api/videos?q=surfing&v=2&alt=jsonc) [function.file-get-contents]: failed to open stream: Connection在第 13 行的 /opt/lampp/htdocs/date.php 中被拒绝 注意:尝试在第 16 行的 /opt/lampp/htdocs/date.php 中获取非对象的属性 注意:尝试在第 16 行获取非对象的属性第 16 行的 /opt/lampp/htdocs/date.php 注意:尝试在第 16 行的 /opt/lampp/htdocs/date.php 中获取非对象的属性

该文件的名称是 date.php,我在代理服务器后面的 linux 机器上的 localhost 上运行它。

我认为连接被拒绝的事情表明可能存在IP冲突或其他问题。我不知道。有人可以帮我解决这个问题吗?

4

3 回答 3

0

尝试:


$url = 'http://www';

 $proxy = 'tcp://xxx:8080';

 $context = array(
    'http' => array(
        'proxy' => $proxy,
        'request_fulluri' => True,
        ),
    );

 $context = stream_context_create($context);

 $body = file_get_contents($url, False, $context);

foreach($result["data"]["items"] as $val) {
  echo $val["id"]."<br/>";
}
于 2012-04-09T10:58:43.310 回答
0

您似乎正在关闭连接的代理。已经有了file_get_contents通过代理访问问题的答案

代理后面的file_get_contents?

于 2012-04-09T11:00:25.847 回答
0

您可以使用curl

$feedURL = "https://gdata.youtube.com/feeds/api/videos?q=surfing&v=2&alt=jsonc";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $feedURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
//curl_setopt($ch,CURLOPT_PROXY,"x.x.x.x:8888"); // Proxy Use
$json = curl_exec($ch);

$result = json_decode($json, true);
foreach($result['data']['items'] as $items)
{
    var_dump($items['id']);
}
于 2012-04-09T11:07:27.980 回答