这里是具体的curl请求函数,已将对应的需求作为参数编写
/**
* 发起请求并获取返回值
* @param string $url
* @param string $method 请求方式
* @param array|string $requestData 请求数据
* @param array $headers 请求头 数组
* @param string $returnFormat 返回数据当 1.默认data,返回响应体 2.header,返回响应头信息
* @return string*/publicstaticfunction request($url, $method =‘GET‘, $requestData =null, $headers =null, $returnFormat =‘data‘) {if(is_array($requestData)) {
$requestData=http_build_query($requestData);
}if(‘GET‘== strtoupper($method) &&$requestData) {
$url= $url.‘?‘.urlencode($requestData);
}
$headerFormat=false;if($returnFormat ==‘header‘){
$headerFormat=true;
}
$ci=curl_init();//设置解析地址curl_setopt($ci, CURLOPT_RESOLVE, ["api.butian.net:443:101.227.27.122"]);//302的也可以获取curl_setopt($ci, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ci, CURLOPT_URL, $url);
curl_setopt($ci, CURLOPT_RETURNTRANSFER,true);//不直接输出curl_setopt($ci, CURLOPT_HEADER, $headerFormat);//启用时会将头文件的信息作为数据流输出curl_setopt($ci, CURLOPT_AUTOREFERER, $headerFormat);//当根据Location:重定向时,自动设置header中的Referer:信息curl_setopt($ci, CURLOPT_USERAGENT, ‘FO UA V1.0‘);
curl_setopt($ci, CURLINFO_HEADER_OUT,true);//TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求headercurl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ci, CURLOPT_TIMEOUT, (60));
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE);//是否验证ssl证书(http)curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE);//是否验证证书使用于此主机(http)if($headers) {
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
}if(‘POST‘==strtoupper($method)) {
curl_setopt($ci, CURLOPT_POST,true);
curl_setopt($ci, CURLOPT_POSTFIELDS, $requestData);
}if(‘PUT‘==strtoupper($method)){
curl_setopt ($ci, CURLOPT_CUSTOMREQUEST,"PUT");
curl_setopt($ci, CURLOPT_POSTFIELDS, $requestData);
}
$ret=curl_exec($ci);//$requestHeader = curl_getinfo($ci, CURLINFO_HEADER_OUT);//查看请求头信息//note_log($requestHeader);//return $requestHeader;$httpCode= curl_getinfo($ci,CURLINFO_HTTP_CODE);//http错误码//判断http返回的错误码if ($httpCode != 200) {
$err_str="HTTP ERR NUM:".$httpCode ."\n";
die($err_str);
}
curl_close($ci);return$ret;
}