【问题标题】:Get json data with file_get_contents使用 file_get_contents 获取 json 数据
【发布时间】:2016-01-14 19:36:28
【问题描述】:

我需要从这个 url 检索信息:

http://example.com/ajax.php?sport=soccer&language_id=vn&block_id=page_home_1_block_home_matches_1&block_name=block_home_matches&callback_params={"date": "2016-01-14", "display": "all"}&action=updateContent&params={}

我的网址是这样的:

http://example.net/ajax.php?sport=soccer&language_id=vn&block_id=page_home_1_block_home_matches_1&block_name=block_home_matches&callback_params=%7B%22date%22%3A%20%222016-01-14%22%2C%20%22display%22%3A%20%22all%22%7D&action=updateContent&params=%7B%7D

这里是 ajax.php:

<?php

$sport = $_GET["sport"];
$language_id = $_GET["language_id"];
$block_id = $_GET["block_id"];
$block_name = $_GET["block_name"];
$callback_params = $_GET["callback_params"];
$action = $_GET["action"];
$params = $_GET["params"];

$url = "http://example.com/ajax.php?sport=$sport&language_id=$language_id&block_id=$block_id&block_name=$block_name&callback_params=$callback_params&action=$action&amp;params=$params";

echo file_get_contents($url);

?>

但是什么都不返回,这里有什么问题吗??

【问题讨论】:

  • var_dump(file_get_contents($url)) 的结果是什么; ?
  • @CooPer : boolean false
  • 请检查allow_url_fopen,如果是真的你的url有问题,你应该打印它并检查问题出在哪里,例如你的url中有&amp;amp,你必须添加&amp; .一步一步测试,不带get参数,只用一个参数检查,以此类推。

标签: php json file-get-contents


【解决方案1】:

为了安全起见,服务器可能将allow_url_fopen 设置为关闭(请参阅http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen)

尝试使用 curl 来获取数据

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
echo $data;

另外,为了避免您在 URL 中传递的数据可能出现问题,请务必对每个变量调用 urlencode,以防任何变量包含特殊字符,例如 &amp; 或 =。例如:

$sport = urlencode($_GET["sport"]);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多