php中实现curl模拟Http请求

xiaoxiao2021-02-28  225

       前几天做了群发短信和群发邮件,其中群发短信用到了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中,跳过证书验证

转载请注明原文地址: https://www.6miu.com/read-27192.html

最新回复(0)