php curl使用总结(一)

今天和第三方支付做对接的时候,在本地用wamp(php版本5.4.14)运行他们的支付demo的时候,报了一个错误。loadXML函数中不能传空值。排查代码的时候,发现他们用了curl,我以前也接触过curl,但是并没有很深的研究只知道他是一种模拟浏览器传输数据的工具。借着这个机会把curl好好的研究一下。

1、curl是什么

百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gophertelnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

php中使用最多的是通过curl来模拟get和post请求。

 

2、如何使用curl

(1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。

(2)、使用curl完成简单的请求主要分为四大步:

1).初始化,创建一个新的curl资源。

2).设置url和相应的选项

3).抓取url并把他传递给浏览器

4).关闭curl资源。把资源释放。

复制代码
 1         $MyAES = new MyAES();
 2         $jiaRes = $MyAES->desEncryptStr($data,"1102130405061708");
 3         $header[] = "Content-type: text/xml;charset=UTF-8";
 4         $ch = curl_init();
 5         curl_setopt($ch, CURLOPT_URL,REURL);
 6         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
 7         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
 8         curl_setopt($ch, CURLOPT_POST, true);
 9         curl_setopt($ch, CURLOPT_POSTFIELDS, $jiaRes);
10         $aa = curl_exec($ch);
11         // grab URL, and print    
12         if(curl_errno($ch)){
13             print curl_error($ch);
14         }
15         curl_close($ch);    
复制代码

贴上项目一段代码,好好的分析一下。

curl_init这个是初始化,创建一个新的curl资源。
TRUE
FALSE
CURLOPT_RETURNTRANSFER
FALSE
CURLOPT_HTTPHEADER  一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100') 
CURLOPT_POST 启用时会发送一个常规的POST请求     CURLOPT_POSTFIELDS  全部数据以http协议中post方式发送。

 跟多curlopt对应的设置请查看php文档 http://php.net/manual/zh/book.curl.php

特意说明一下curl_setopt_array — 为 cURL 传输会话批量设置选项
使用案例为
复制代码
 1 <?php
 2 // 创建一个新cURL资源
 3 $ch = curl_init();
 4 
 5 // 设置URL和相应的选项
 6 $options = array(CURLOPT_URL => 'http://www.example.com/',
 7                  CURLOPT_HEADER => false
 8                 );
 9 
10 curl_setopt_array($ch, $options);
11 
12 // 抓取URL并把它传递给浏览器
13 curl_exec($ch);
14 
15 // 关闭cURL资源,并且释放系统资源
16 curl_close($ch);
17 ?>
复制代码

curl是很强大的,例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!

这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!

效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们

要采集一个信息量特别庞大的站,运行效率的差别可想而知!

不单单是效率上,稳定性上来说,curl也远比file_get_contents()函数要好很多!

这就是强大的curl,下文将给大家详细介绍它的高级应用,我们可以模拟浏览器的post传值,甚至上传!

posted @   G.T  阅读(8548)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示