为什么无法从PHP获取JSON数据?

时间:2011-12-13 09:50:17

标签: php json curl

我有一个网页,它公开了一些公共接口,这些接口像其他页面的简单AJAX调用一样被访问。例如:

http://domain1.com/interface/function.php

$json['result'] = ... // fill with data
$json['ok'] = true;
echo json_encode($json);

http://domain2.com/application.php

$call = 'http://domain1.com/interface/function.php';
$curl = curl_init($call);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$call_data = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
print_r($error);
print_r($call_data);

问题是$ call_data为空。我已经尝试使用* file_get_contents()*和其他curl参数而没有成功。另外,如果我通过以下方式更改 application.php 中的第一行

$call = 'http://www.google.com/';

$ call_data获取正确的文件内容(当然是Google主页内容)。更多,* curl_error()*不会返回任何错误。发生了什么?为什么呢?

2 个答案:

答案 0 :(得分:0)

上周末我也有同样的事情。 如果您有一些htaccess文件或类似的东西统一服务证明器的url并添加/或进行某种重定向,这可能会导致问题 - curl_exec($curl);curl_error($curl);都是空字符串。

答案 1 :(得分:-2)

来自PHP curl_exec手册:

  

成功时返回TRUE,失败时返回FALSE。但是,如果设置了CURLOPT_RETURNTRANSFER选项,它将在成功时返回结果,在失败时返回FALSE。

您确定已将CURLOPT_RETURNTRANSFER设置为true吗?