执行URL请求,并返回数据
public function get_url($url, $fields = array(), $UserAgent = null, $vfSSL = false) {
$SSL = substr($url, 0, 8) == "https://" ? true : false;
$ch = curl_init();
if ($UserAgent) { // 在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_USERAGENT, $UserAgent);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // 在发起连接前等待的时间,如果设置为0,则无限等待
curl_setopt($ch, CURLOPT_TIMEOUT, 90); // 设置cURL允许执行的最长秒数
curl_setopt($ch, CURLOPT_URL, $url); // 设置请求地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
// SSL验证
if ($SSL) {
if ($vfSSL) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_CAINFO, CORE_PATH . '/cacert.pem');
} else {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 不检查证书中是否设置域名
}
}
// 数据字段
if ($fields) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
}
$output = curl_exec($ch);
if (curl_errno($ch)) {
error('请求远程地址错误:' . curl_error($ch));
}
curl_close($ch);
return $output;
}
请求示例
get_url($url, $data, '', true)
- $url 是请求的地址
- $data 为空则为get请求,有值为post请求
- 第三个参数为头信息
- 第四个参数 是否验证证书