如果在使用粗crul library来进行远程请求(API调用)的时候要注意的一个坑。就是要区别请求成功,请求失败,请求成功但返回为空。这里要特别注意后2者,稍不注意就会掉坑。因为如果请求的url不存在或者连接超时(各种原因)的时候返回结果为false.所以不要简单的认为返回的数据为空。可以用$result === false为真来判断请求失败。因为一般的API不会返回boolean值的。引申一下,如果你是在制作一个API也请不要随意的返回一个空数据为false.这样会很难区分到底是数据为空还是请求失败。就比如:
protected function send($parameters = array()) { $apiUrl = "xxxxx"; if ($parameters) { $apiUrl .= ‘&‘ . http_build_query($parameters); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $apiUrl); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘GET‘); curl_setopt($ch, CURLOPT_HEADER, 0); $result = curl_exec($ch); $curlErrno = curl_errno($ch); $curlError = curl_error($ch); curl_close($ch); if ($result && $curlErrno <= 0) { return json_decode($result, true); } else { exit("Error: " . $curlError . "\n"); } }
或者这样也可以
1 if ($result === false) { 2 //请求失败 3 } else { 4 //请求成功 5 }
时间: 2024-10-11 23:41:18