当我通过Chrome浏览器调试网站时,我获得了JSON响应。但是,当我尝试通过PHP执行此操作时,我收到错误消息
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 :(得分:0)
我认为Chrome会自动将代码转换为json。通过在PHP中使用 json_encode()更明确。
答案 1 :(得分:0)
尝试使用json_encode
$result = file_get_contents($url, false, $context);
echo json_encode($result);
答案 2 :(得分:0)
您是否可以首先检查您的PHP配置,确保allow_url_fopen
[1]设置为“开启”,如果您必须更改设置,请不要忘记重启Apache(或您使用的任何网络服务器) )。接下来,使用初始帖子中的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