定义
curl是PHP语言的一个用来与服务器实现交互的工具,通过curl向服务器发送HTTP协议,可以更加灵活的选项设置不同的HTTP协议参数。
使用前的准备
curl扩展开启,重启服务器,有时候会遇到不成功的状况,应当在环境变量中设置对应的PHP路径。
使用CURL发送请求的具体流程
- 初始化连接句柄;
- 设置CURL选项;
- 执行并获取结果;
- 释放CURL连接句柄。
下面是curl模拟get,post请求方式的具体代码
curl 模拟get请求
1. 初始化curl工具
$ch = curl_init();
- 相关请求参数的设置
$url = 'http://www.baidu.com';
curl_setopt($ch,CURLOPT_URL,$url);
- 执行并获取结果
curl_exec($ch);
- 释放句柄
curl_close($ch);
curl模拟post请求
1. 初始化curl工具
$ch = curl_init();
- 相关请求参数的设置
$url = 'http://www.baidu.com';
curl_setopt($ch,CURLOPT_URL,$url);
注意post多出如下设置,即post提交查询
curl_setopt($ch,CURLOPT_POST,1);
//提交数据
$data = ['name'=>'li'];
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
- 执行并获取结果
curl_exec($ch);
- 释放句柄
curl_close($ch);
在对应的post服务器接收post请求后我们可以获得相关数据
相关配置为
在第二步时设置
CURLOPT_RETURNTRANSFER
设为1表示接收返回值
在第三步时,将执行结果接收即可
当我们请求的是HTTPS请求时,一般都是跳过证书验证,代码如下。
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
最后是我封装的一个简单的CURL类
希望博友按顺序阅读,有什么问题可以交流哦
class Curl
{
//请求网址
private $url;
//是否直接返回
private $is_return = 0;
public function __get($name)
{
if(property_exists($this,$name))
{
return $this->$name;
}
}
public function __set($name, $value)
{
if(property_exists($this,$name))
{
$this->$name = $value;
}
}
public function send($data = [])
{
//1.开启curl
$ch = curl_init();
//2.请求服务器地址
curl_setopt($ch,CURLOPT_URL,$this->url);
//3.跳过证书验证
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
//4.判断请求
if($data && is_array($data))
{
curl_setopt($ch,CURLOPT_POST,1);
//提交数据
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
//判断是否直接返回
if($this->is_return === 1)
{
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
else
{
curl_exec($ch);
curl_close($ch);
}
}
}
使用
require_once './curl.php';
$curl = new Curl();
$curl->url = 'http://www.wjhphp.com/0906/post.php';
$curl->send();
post请求则需在调用send()函数时传递数据。
总结在这里
CURL是一个开源的发送请求的工具,其实还有很多配置项,这里只是介绍了它的简单使用,让大家了解CURL的基本使用,如果有其他需要可以查阅手册,学习相关的配置项。