我想從這裏獲取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的一些事情......我真的不知道。我今天在這裏看到了其他答案,但他們沒有解決我的問題。我錯過了什麼嗎?
謝謝。
你只是簡單地假設curl成功。至少你應該有'if($ data === false){die(curl_error($ ch)); }來處理這個問題,然後檢查'$ data'是** BEFORE **之後,你嘗試解碼它。如果它以某種方式被破壞,你會得到另一個布爾虛假回來。 –
如果我在瀏覽器中打開JSON網址,我將重定向到http://sportv.globo.com/site/cartola-fc/。你確定這是正確的網址嗎? – mhenke
我剛剛用Google Chrome打開它並顯示JSON數據。試着把1放在最後,仍然重定向? – Bagata