PHP模拟发送get、post请求
- 模拟发送post请求
public function httpPost($url = '', $param = []) {
if (!$url || empty($param)) return false;
// 创建一个新CURL资源
$ch = curl_init($url);
// 设置头文件的信息作为数据流是否输出
curl_setopt($ch, CURLOPT_HEADER, false);
// 设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 设置post方式提交
curl_setopt($ch, CURLOPT_POST, true);
// 设置post数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
// 不验证证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// 不验证HOST
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// 执行请求
$data = curl_exec($ch);
// 关闭CURL资源,并且释放系统资源
curl_close($ch);
return $data;
}
- 模拟发送get请求
public function httpGet($url = '') {
if (!$url) return false;
$curl = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 设置cURL允许执行的最长秒数。
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
// 需要获取的URL地址,也可以在curl_init()函数中设置
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
// 关闭CURL资源,并且释放系统资源
curl_close($curl);
return $res;
}
CURLOPT_HEADER:启用时会将头文件的信息作为数据流输出。
CURLOPT_RETURNTRANSFER :[ true | false ] 选项,也可以使用1 | 0代替;
【true】:如果成功只将结果返回,不自动输出任何内容; 如果失败返回FALSE;
【false】:如果成功只返回TRUE,自动输出返回的内容; 如果失败返回FALSE;
使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true。
CURLOPT_POST:如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
CURLOPT_POSTFIELDS:全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。
CURLOPT_SSL_VERIFYPEER:禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录,如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。
CURLOPT_SSL_VERIFYHOST:
1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。
2 检查公用名是否存在,并且是否与提供的主机名匹配。