2014-02-24 132 views
-1

當我通過Chrome瀏覽器調試網站時,我得到了JSON響應。但是,當我試圖做到這一點通過PHP我得到一個錯誤信息如何獲得唯一的JSON響應

failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found 

感謝您的幫助。

適用exaplme: 在Chrome瀏覽器中可以做的事情: 轉到頁面:http://gruper.pl/warszawa,在底部你會看到一個按鈕「Wiecej ofert」。單擊後,您將在調試看到:

http://gruper.pl/DataProvider.php?cityId=51&categoryId=0&mainNaviId=1&showBTile=true&page=1 

和響應:

[{"ID_PAGE":"59199","ID_CITY":"3952","main_city":"3952","date_start":"2014-02-23 18:00:00","date_end":"2014-03-01 23:59:00","price"..... 

是否有可能得到相同的PHP?

我的代碼是:

<?php 

$url = 'http://gruper.pl/DataProvider.php?cityId=51&categoryId=0&mainNaviId=1&showBTile=true&page=1'; 

// use key 'http' even if you send the request to https://... 
$options = array(
    'http' => array(
     'header' => "Content-type: application/x-www-form-urlencoded\r\n" , 
         "Accept:application/json\r\n" . 
         "Accept-Encoding:gzip,deflate,sdch\r\n" . 
         "X-Requested-With:XMLHttpRequest\r\n", 
     'method' => 'GET' 
    ), 
); 

$context = stream_context_create($options); 
$result = (file_get_contents($url, false, $context)); 

?> 


<html> 

<head> 
<meta charset="UTF-8"> 
</head> 

</html> 
+0

你指什麼作爲JSON響應僅僅是瀏覽器(和所有其他瀏覽器)顯示響應頭,JSON將類似於該實施例中的方式:HTTP:// json.org/example – SaschaM78

+0

改述你的問題 - 目前還不清楚你的問題是什麼。 – jancha

+0

你能再檢查一次嗎?我放置了新版本。的 – user3345547

回答

0

我認爲Chrome的自動轉換代碼JSON。通過在PHP中使用json_encode()更明確。

0

嘗試使用json_encode

$result = file_get_contents($url, false, $context); 
echo json_encode($result); 
+0

你能再檢查一次嗎?我有變化的描述。謝謝。 – user3345547

0

你能不能先檢查你的PHP配置,確保allow_url_fopen [1]設置爲「開」,如果你要更改設置,不要忘記重啓Apache(或您使用的任何Web服務器)。接下來,從您的初始後使用URL和檢查,如果你使用內聯調試得到預期的結果:

$url= 'http://gruper.pl/DataProvider.php?cityId=51&categoryId=0&mainNaviId=1&showBTile=true&page=1'; 
$contents= file_get_contents($url); 
print 'Content returned: '.$contents.'---'."\n"; 

接下來,我們將檢查返回的內容包含正確的JSON值,添加以下代碼:

try { 
    $arrConverted= json_decode($contents); 
    print 'JSON-decoded representation:'; 
    print_r($arrConverted); 
} catch (Exception $ex) { 
    print 'JSON-decoding failed, the error was: '.$ex->getMessage(); 
} 

您通常不需要創建上下文流來獲取網頁,在大多數函數中都有對默認協議(如FTP和HTTP)的內置支持[2]。

讓我們知道你是怎麼走到這一步。

[1] http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen [2] http://de1.php.net/manual/en/features.remote-files.php