2013-05-15 172 views
0

我正在嘗試獲取JSON字符串,並且它一直保持爲NULL,我不知道爲什麼。有人可以檢查我的代碼是否正確嗎?從URL獲取JSON

$url = "http:/engin.umich.edu/college/about/cal/event-calendar/futurejson"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    $feed = curl_exec($ch); 
    curl_close($ch); 

    $data = json_decode($feed,true); 
+1

您可以發佈'$ feed'的內容是什麼? –

+0

你可以發佈'curl_error($ ch)'的結果嗎?你可以在'$ feed = curl_exec($ ch);'這行後面加上。它會告訴你是否有問題獲取網址。 –

+7

你在URL中有一個錯字,它應該開始'http://' - 你錯過了一個斜線。您還需要啓用'CURLOPT_FOLLOWLOCATION'選項,因爲它返回一個重定向。 – Barmar

回答

3
$url = "http://engin.umich.edu/college/about/cal/event-calendar/futurejson"; 
// missing/^ 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
// It's returning a redirect to www.engin.umich.edu 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$feed = curl_exec($ch); 
curl_close($ch); 

$data = json_decode($feed,true); 
+0

我不知道爲什麼當我在瀏覽器中訪問其純JSON頁面時,卻告訴我它是重定向的?這可能會解釋爲什麼我得到NULL - 語法錯誤,當我修復//問題時格式錯誤的JSON。 –

+0

瀏覽器自動執行重定向。 CURL要求您爲此設置一個選項,否則它會返回重定向狀態,如果需要,您必須自己關注。 – Barmar

+0

謝謝!修復網址,然後轉儲結果並單擊重定向鏈接,最終顯示數據實際存在的位置。 –