【问题标题】:youtube api json feed php erroryoutube api json feed php错误
【发布时间】:2012-04-09 10:53:45
【问题描述】:

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

$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流:第 13 行 /opt/lampp/htdocs/date.php 中的连接被拒绝 注意:尝试在第 16 行的 /opt/lampp/htdocs/date.php 中获取非对象的属性 注意:尝试在第 16 行的 /opt/lampp/htdocs/date.php 中获取非对象的属性 注意:尝试在第 16 行的 /opt/lampp/htdocs/date.php 中获取非对象的属性

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

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

【问题讨论】:

  • 检查另一个 URL 并验证您正在关门的代理。
  • 我已经试过了。它与任何其他 url 给出相同的错误但是可以使用此方法访问 localhost 上的文件而没有任何问题

标签: php api youtube json


【解决方案1】:

您可以使用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']);
}

【讨论】:

  • 对不起,我试过 curl。它没有给出任何错误,但它什么也没显示。无论如何,我发现了问题,这确实是一个代理问题。感谢所有的帮助。我真的很感激
  • 只需在此处添加您的代理 IPport curl_setopt($ch,CURLOPT_PROXY,"x.x.x.x:8888");
【解决方案2】:

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

file_get_contents behind a proxy?

【讨论】:

    【解决方案3】:

    试试:

    
    $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/>";
    }
    

    【讨论】:

    • 我的错!所以我猜我们需要在 $proxy 中指定代理 ip 地址和端口。
    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2016-06-08
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多