使用cURL从URL获取JSON数据

时间:2013-06-18 18:18:46

标签: php json curl

我正在尝试从URL读取JSON,但我无法获取cURL来检索数据。

我有以下PHP:

$curl = curl_init($url);

$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 5,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER =>array('Accept: application/json', "Content-type: application/json"),
CURLOPT_FAILONERROR => FALSE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE
);

curl_setopt_array($curl, $options);

$response = curl_exec($curl);
print "curl_error returned: ".curl_error($curl)."\n <br />\n";
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
print "Status of HTTP: ".$status."\n";
$response = json_decode($response);
print_r($response)

问题是这会返回:

curl_error returned: couldn't connect to host
Status of HTTP: 0

我正在阅读的JSON数据总共约300个字符,并且没有格式化(这有关系吗?)我的意思是没有格式化的是JSON全部在一行。

我尝试使用fopen()和file_get_contents(),但这样做了(没有返回)。

我遇到的另一个问题是连接所需的时间。当我在浏览器中访问URL时,它会立即呈现JSON,但是当我使用cURL(或file_get_contents())时,需要很长时间才能完成。这就是我特意限制超时的原因。如果我让超时没有限制,页面会在大约2分钟后呈现,结果与超时相同。

我现在不确定如何阅读此网址。为了给出URL内容的描述,它实际上只是在一行上呈现的JSON数据(并且它不是一个大文件,它实际上相当小)。如果重要,URL中会有一些“获取”信息。

感谢您的帮助。

有人建议这可能是防火墙/连接问题,但从我的角度来看,我可以向其他网站发送请求并准确检查其状态代码。在URL的末尾,我可以通过浏览器访问它??

0 个答案:

没有答案