/**
* CURL请求
* @param string $url 请求url地址
* @param string $method 请求方法 get post
* @param array null $postFields post数据数组
* @param array $headers 请求header信息
* @param bool|false $debug 调试开启 默认false
* @return mixed
*/
function httpRequest($url, $method="GET", $postFields = null, $headers = array(), $debug = false) {
$method = strtoupper($method);
$curl = curl_init();//初始化一个cURL会话
//Curl settings
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//强制使用 HTTP/1.0
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");//在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60); //在发起连接前等待的时间,如果设置为0,则无限等待
curl_setopt($curl, CURLOPT_TIMEOUT, 7); //设置cURL允许执行的最长秒数
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
switch ($method) {
case "POST":
curl_setopt($curl, CURLOPT_POST, true);//设置访问方式为POST
if (!empty($postFields)) {
$tmpDataStr = is_array($postFields) ? http_build_query($postFields) : $postFields;
curl_setopt($curl, CURLOPT_POSTFIELDS, $tmpDataStr);//POST的数据数组
}
break;
default:
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);//设置访问方式为GET
break;
}
$ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;
curl_setopt($curl, CURLOPT_URL, $url);//需要获取的URL地址,也可以在curl_init()函数中设置
if($ssl){
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
}
//curl_setopt($ci, CURLOPT_HEADER, true); //启用时会将头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);//启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器
curl_setopt($curl, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置HTTP头字段的数组
curl_setopt($curl, CURLINFO_HEADER_OUT, true);//启用时追踪句柄的请求字符串。
//curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); //设定HTTP请求中"Cookie: "部分的内容。多个cookie用分号分隔,分号后带一个空格
//Curl settings 结束
$response = curl_exec($curl);//执行一个cURL会话
$requestInfo = curl_getinfo($curl);//获取一个cURL连接资源句柄的信息
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);//最后一个收到的HTTP代码
if ($debug) {
echo "=====post data======\r\n";
var_dump($postFields);
echo "=====info===== \r\n";
print_r($requestInfo);
echo "=====response=====\r\n";
print_r($response);
}
curl_close($curl);//关闭一个cURL会话
return $response;
//return array($http_code, $response,$requestinfo);
}
//访问外网
public function http_weixinget($url)
{
//$content = file_get_contents($url);
//return $content;
$curl = curl_init($url);//获取网络资源
if (strripos($url, 'https://') !== false) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($curl);
$status = curl_getinfo($curl);
curl_close($curl);
if ($status['http_code'] == 200) {
return $content;
exit();
} else {
return false;
exit();
}
}
//访问外网
public function http_weixinpost($url, $data)
{
$curl = curl_init($url);//获取网络资源
if (strripos($url, 'https://') !== false) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($curl);
$status = curl_getinfo($curl);
curl_close($curl);
if ($status['http_code'] == 200) {
return $content;
exit();
} else {
return false;
exit();
}
}
------------------------------------------------------------------------------------------------------------------
网友评论