说明:下面代码支持http和https,使用于各种接口请求。里面设置的参数,根据自己的需求设定。
/**
* curl模拟post请求
* @params string $url [请求地址]
* @params string $post_data [请求数据]
* @params string $timeout [超时时间]
* @params string $header [设置的header头信息]
* @params string $data_type [请求数据的格式]
* @return json $result [响应结果]
*/
private function curlPost($url, $post_data = [], $timeout = 5, $header = "", $data_type = "")
{
$header = empty($header) ? '' : $header;
if($data_type == 'json') {
$postData = json_encode($post_data);
}
if($data_type == 'array') {
$postData = $post_data;
}
if(is_array($post_data)) {
$postData = http_build_query($post_data, '', '&');
}
$ch = curl_init();
//抓取指定网页
curl_setopt($ch, CURLOPT_URL, $url);
//以字符串形式返回到浏览器当中
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//对认证证书来源的检查 // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//请求方式
curl_setopt($ch, CURLOPT_POST, true);
//模拟的header头
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//Post提交的数据包
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
//设置超时限制防止死循环
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
//拿到请求头信息
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
// 显示返回的Header区域内容
// curl_setopt($ch, CURLOPT_HEADER, 0);
// curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$result = curl_exec($ch);
// 打印请求的header信息
$requestHeader = curl_getinfo($ch);
print_r($requestHeader);die;
curl_close($ch);
return $result;
}