PHP的curl函数提供了很多功能,需要在具体步骤中进行组合。我们先来了解一下PHP创建curl请求的基本步骤。$ch=curl_init();//创建一个新的CURL资源并将其分配给变量$chcurl_setopt($ch,CURLOPT_URL,$url);//设置URL$response=curl_exec($ch);//执行,获取URL并输出到浏览器curl_close($ch);//释放资源如果我们想要获取内容而不是输出,可以使用CURLOPT_RETURNTRANSFER参数并将其值设置为非零或true。代码如下:curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);我们可以通过设置函数curl_setopt()的不同参数来得到不同的结果,这也是CURL扩展的强大之处。curl_setopt()函数的常用参数选项,详见官方文档,此处不再一一列举。以下是我常用的curlget和post请求方式:getrequest:publicfunctionhttpGet(string$url=''){//log记录请求信息//todotry{$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_TIMEOUT,60);//https请求if(strlen($url)>5&&strtolower(substr($url,0,5))=="https"){curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);}$response=curl_exec($ch);$errorCode=curl_errno($ch);curl_close($ch);if(!empty($errorCode)){//可以记录错误码日志returnnull;}//记录返回结果logreturn$response;}catch(\Exception$e){$errorLog=['msg'=>$e->getMessage(),'trace'=>$e->getTraceAsString(),'data'=>['url'=>$url,]];//记录错误日志returnnull;}}POST请求:publicfunctionhttpPost(string$url='',array$data=[]){//log记录请求信息//todotry{$jsonData=json_encode($data);$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$jsonData);curl_setopt($curl,CURLOPT_HEADER,0);curl_setopt($curl,CURLOPT_TIMEOUT,60);curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json;charset=utf-8','Content-Length:'.strlen($jsonData)]);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//https请求if(strlen($url)>5&&strtolower(substr($url,0,5))=="https"){curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);}$result=curl_exec($curl);$errorCode=curl_errno($curl);curl_close($curl);if(!empty($errorCode)){//可以记录错误码日志returnnull;}//记录返回结果logreturnjson_decode($result,true);}catch(\Exception$e){$errorData=['msg'=>$e->getMessage(),'trace'=>$e->getTraceAsString(),'data'=>['url'=>$url,'postData'=>$data]];//记录错误日志returnnull;}}欢迎小伙伴交流
