我将此函数编码为从API检索JSON数据(以JSON格式返回数据)。
function file_get_contents_curl($url,$json=false){
$ch = curl_init();
$headers = array();
if($json) {
$headers[] = 'Content-type: application/json';
$headers[] = 'X-HTTP-Method-Override: GET';
}
$options = array(
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => array($headers),
CURLOPT_TIMEOUT => 5,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_MAXREDIRS => 3,
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
);
curl_setopt_array($ch,$options);
$response = curl_exec($ch);
curl_close($ch);
if($response === false) {
return false;
} else {
return $response;
}
}
如果$ response实际上是===false
,那是否意味着cURL无法连接到该网址?或者也可能是API本身没有返回任何内容(但连接成功)?
我如何知道cURL是否正确连接到URL?
答案 0 :(得分:1)
检查错误返回值
成功时返回TRUE,失败时返回FALSE。但是,如果 设置CURLOPT_RETURNTRANSFER选项后,它将返回结果 成功,失败就错了。
答案 1 :(得分:0)
如果$response === false
则卷曲失败。
这并不意味着卷曲成功但没有内容。由于您已启用CURLOPT_RETURNTRANSFER
,这意味着响应将作为字符串返回。因此,$response === ''
不应指明任何内容。
如果你只遇到两个等号而不是三个等号,你会遇到麻烦。有三个,你正在进行类型检查,所以布尔false
与空字符串不同。