我正在尝试从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的末尾,我可以通过浏览器访问它??