2013-09-05 16 views
0

我想從這裏獲取json數據:JSON url;爲什麼url通過瀏覽器返回JSON數據,但沒有顯示curl(CURLOPT_RETURNTRANSFER爲true)?

使用Chrome我可以看到所有的JSON數據,但使用curl(下面的代碼)似乎重定向和迷路(如果CURLOPT_FOLLOWLOCATION是假的,它什麼都不做):

$json_url = 'http://cartolafc.globo.com/mercado/filtrar.json?page=1&order_by=media&status_id=7&posicao_id=1'; 
      $ch = curl_init($json_url); 
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
      //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
      //even killing the redirect process it does not return JSON data 
      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
      $data = curl_exec($ch); 
      $dataDecoded = json_decode($data); 
      print_r($dataDecoded); 

我看到一些關於模擬一個捲曲的瀏覽器,但我代理會做的伎倆。也許關於服務器使用cookies的一些事情......我真的不知道。我今天在這裏看到了其他答案,但他們沒有解決我的問題。我錯過了什麼嗎?

謝謝。

+0

你只是簡單地假設curl成功。至少你應該有'if($ data === false){die(curl_error($ ch)); }來處理這個問題,然後檢查'$ data'是** BEFORE **之後,你嘗試解碼它。如果它以某種方式被破壞,你會得到另一個布爾虛假回來。 –

+0

如果我在瀏覽器中打開JSON網址,我將重定向到http://sportv.globo.com/site/cartola-fc/。你確定這是正確的網址嗎? – mhenke

+0

我剛剛用Google Chrome打開它並顯示JSON數據。試着把1放在最後,仍然重定向? – Bagata

回答

0

錯誤變量使用:

 $data = curl_exec($ch); 
     ^^^^^--- data here 
     $dataDecoded = json_decode($json); 
            ^^^^--- not $data here 

所以,你想不存在的變量進行解碼。

+0

對不起,運行的代碼已經有了更正,我只是忘了放在這裏。我的錯。現在問題代碼已更正。我的問題的答案是使用CURLOPT_SLL_VERIFYPEER。不過謝謝! – Bagata

相關問題