使用CURL完成一个请求:
- 初始化连接句柄
- 设置CURL选项
- 执行并获取结果
- 释放CURL连接句柄
发送GET请求
function doGetRequest($url,$data,$timeout = 5){ if($url == "" || $timeout <= 0){ return false; } $url = $url.'?'.http_build_query($data);//拼装GET请求字符串 $c = curl_init((string)$url); curl_setopt($c, CURLOPT_HEADER, false); curl_setopt($c, CURLOPT_RETURNTRANSFER,true); curl_setopt($c, CURLOPT_TIMEOUT, (int)$timeout); $body= curl_exec($c); if($body === FALSE ){ echo "CURL Error:".curl_error($c); } curl_close($c); return $body; }
发送post请求
function dolPostRequest($url,$data,$timeout = 5){ if($url == '' || $timeout <=0){ return false; } $requestString=http_build_query($data); $c = curl_init((string)$url); curl_setopt($c, CURLOPT_HEADER, false); curl_setopt($c, CURLOPT_POSTFIELDS, $requestString); curl_setopt($c, CURLOPT_POST,true); curl_setopt($c, CURLOPT_RETURNTRANSFER,true); curl_setopt($c, CURLOPT_TIMEOUT,(int)$timeout); $body= curl_exec($c); if($body === FALSE ){ echo "CURL Error:".curl_error($c); } curl_close($c); return $body; }
CURL_POST为true,标识这个请求是一个POST请求
会获取当前请求的相关信息
使用curl_getinfo()函数获取CURL请求输出的相关信息
curl_exec($c); $info = curl_getinfo($c);
会得到一个关联数组
- url:网络地址。
- content_type:内容编码。
- http_code:HTTP状态码。
- header_size:header的大小。
- request_size:请求的大小。
- filetime:文件创建的时间。
- ssl_verify_result:SSL验证结果。
- redirect_count:跳转计数。
- total_time:总耗时。
- namelookup_time:DNS查询耗时。
- connect_time:等待连接耗时。
- pretransfer_time:传输前准备耗时。
- size_uplpad:上传数据的大小。
- size_download:下载数据的大小。
- speed_download:下载速度。
- speed_upload:上传速度。
- download_content_length:下载内容的长度。
- upload_content_length:上传内容的长度。
- starttransfer_time:开始传输的时间表。
- redirect_time:重定向耗时。