2012-04-09 85 views
0

好吧,所以我想實現的是使用youtube api來獲取一些Feed。這些提要是json-c編碼的。所以我嘗試使用file_get_contents方法將json feedurl轉換爲字符串並將json解碼。這裏是代碼片段:youtube api json feed php error

$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]:未能打開流:連接在第13行的/opt/lampp/htdocs/date.php中被拒絕 注意:嘗試在/ opt/lampp/htdocs中獲取非對象的屬性/date.php第16行 注意:試圖在第16行中獲取/opt/lampp/htdocs/date.php中非對象的屬性012,注意:嘗試在/ opt/lampp/htdocs中獲取非對象的屬性/date.php在線16

該文件的名稱是date.php,我在代理服務器後面的linux機器上的本地主機上運行它。

我認爲連接拒絕的事情表明可能存在IP衝突或什麼。我不知道。有人可以幫我解決這個問題嗎?

+0

檢查與另一個URL,並驗證代理你關上了門。 – Lobo 2012-04-09 10:56:38

+0

我已經試過了。它給與任何其他網址相同的錯誤howeveer本地主機上的文件可以在沒有任何問題使用此方法訪問 – 2012-04-09 11:08:59

+1

檢查此問題http://stackoverflow.com/questions/1336262/file-get-contents-behind-a-proxy – Lobo 2012-04-09 11:15:01

回答

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']); 
} 
+0

我很抱歉,但我試過捲曲。它沒有發出任何錯誤,但它什麼也沒有顯示。無論如何,我想出了問題,這確實是一個代理問題。感謝所有幫助的人。我真的很感激它 – 2012-04-09 11:32:05

+0

只需在這裏添加代理'IP'和'port' curl_setopt($ ch,CURLOPT_PROXY,「x.x.x.x:8888」);' – Baba 2012-04-09 11:35:40

+0

明白了!感謝您的幫助 – 2012-04-09 11:37:50

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

美元代理是什麼? – 2012-04-09 11:12:36

+0

我的不好!所以我們需要在$ proxy中指定代理IP地址和端口。 – 2012-04-09 11:15:09

+0

是的,或者你也可以使用捲曲,無論你喜歡哪種方式 – 2012-04-09 11:21:16