我正在尝试从 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。为了描述 URL 内容,它实际上只是在一行上呈现的 JSON 数据(它不是一个大文件,它实际上相当小)。如果重要,URL 中有一些“获取”信息。
谢谢你的帮助。
有人建议这可能是防火墙/连接问题,但从我的角度来看,我能够向其他网站发送请求并准确检查它们的状态代码。在 URL 的末端,我可以通过浏览器访问它...?