前几天做了群发短信和群发邮件,其中群发短信用到了curl来模拟发送http请求,那么今天就详细的说一下如何用curl来发送http请求。
一、介绍
curl是利用url的语法规则来传输文件、数据的工具
二、curl应用场景
需求1: 有两个php文件:a.php和b.php ,a.php需要向b.php文件中提交一些数据过去
需求2: 腾讯的服务器有一些关键的数据
上面的情况,就不能使用表单提交数据了
总结:从一个php脚本文件,向其他的服务器文件读取数据、提交数据,使用curl工具帮我们进行传输百度进行对接
三、curl配置
(1)需要在php的配置文件中开启 curl这个扩展,
测试一把,创建phpinfo文件,打印php的信息
(2)上面的步骤没有生效,将php的安装目录保存到系统的环境变量
测试一把:
(3)如果上面两个步骤都不能成功
ssleay32.dll
将这些文件拷贝到windows/system32目录下面
说明:重启apache服务器:
右击我的电脑----管理-----服务和应用程序----服务
四、curl模拟get请求
curl工具既然是传输数据,包括如下情况:
-
模拟get方式请求(从服务器获取一些资源)
-
模拟post请求(从php服务器文件向其他的服务器提交数据)
-
模拟文件上传(从php文件向其他的php文件上传文件)
-
模拟cookie文件的传输
1. 初始化curl:curl_init(),返回资源类型的数据
2. 设置curl(连接哪一个服务)
3. 发送请求
4. 关闭资源
入门案例:
2.curl_baidu.php 获取百度首页的内容
补充1:现在我们将curl请求的数据直接显示了,有时候我们不需要直接显示内容,而是将请求到的内容保存到变量中,然后进行筛选
通过设置curl实现
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
五、curl模拟post请求
post和get方式请求的区别:
post请求时需要携带参数,需要配置curl
5.curl.php接收到数据之后,打印了一下
测试一把:
、
六、封装curl请求
每次发出get、post请求时代码太多,将其封装到类里面
//https请求(支持GET和POST)
function http_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if(!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
//var_dump(curl_error($curl));
curl_close($curl);
return $output;
}
针对https协议的网站,做一些特殊的处理
https:http safe安全的意思,需要提交安全证书,但是我们不能针对每个网站都先申请证书,在curl中,跳过证书验证