php中实现curl模拟Http请求

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值