首页 > 代码库 > curl里面的坑

curl里面的坑

  如果在使用粗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");        }    }
View Code

或者这样也可以

1 if ($result === false) {2     //请求失败3 } else {4     //请求成功5 }
View Code

 

 

curl里面的坑