设为首页 收藏本站
查看: 547|回复: 0

[经验分享] php的curl也没这么复杂

[复制链接]
累计签到:4 天
连续签到:1 天
发表于 2015-8-26 09:19:49 | 显示全部楼层 |阅读模式
  许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了
  首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)



1 <?php
2 $data = "<soap:Envelope>[...]</soap:Envelope>";
3 $tuCurl = curl_init();
4 curl_setopt($tuCurl, CURLOPT_URL, "https://example.com/path/for/soap/url/");
5 curl_setopt($tuCurl, CURLOPT_PORT , 443);
6 curl_setopt($tuCurl, CURLOPT_VERBOSE, 0);
7 curl_setopt($tuCurl, CURLOPT_HEADER, 0);
8 curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3);
9 curl_setopt($tuCurl, CURLOPT_SSLCERT, getcwd() . "/client.pem");
10 curl_setopt($tuCurl, CURLOPT_SSLKEY, getcwd() . "/keyout.pem");
11 curl_setopt($tuCurl, CURLOPT_CAINFO, getcwd() . "/ca.pem");
12 curl_setopt($tuCurl, CURLOPT_POST, 1);
13 curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);
14 curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
15 curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);
16 curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($data)));
17
18 $tuData = curl_exec($tuCurl);
19 if(!curl_errno($tuCurl)){
20   $info = curl_getinfo($tuCurl);
21   echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
22 } else {
23   echo 'Curl error: ' . curl_error($tuCurl);
24 }
25
26 curl_close($tuCurl);
27 echo $tuData;
28 ?>
   WTF,这到底是在做什么?
   想要学会这种“高端”的用法吗?
   首先,相信你肯定知道网址大部分是由http开头的,那是因为他们需用通过http(超文本传送协议 HTTP-Hypertext transfer protocol)来进行数据传输,但是传输数据不是简单的将一句"Hello"传到服务器上就搞定的事情,发送者为了方便接受者理解发送者的实际意图以及知道发送人到底是何许人也,发送者往往要将许多额外信息一并发给接受者,就像寄信人需要在信件外套一个信封一样,信封上写着各种发信人的信息。所有的这些最终合并成了一个叫做报文(message)的玩意,也就构成了整个互联网的基础。
  
   curl的工作就是通过http协议发送这些message (php的libcurl目前还支持https、ftp、telnet等其他协议)
   现在再看代码,实际上代码只做了五件事情


  • curl_init()初始化curl
  • curl_setopt()设置传输数据和参数
  • curl_exec()执行传输并获取返回数据
  • curl_errono()返回错误码
  • curl_close()关闭curl


下面给出使用GET和POST方法如何抓取和提交任意页面的数据




1 <?php
2     //初始化
3     $curl = curl_init();
4     //设置url
5     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
6     //设置返回获取的输出为文本流
7     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
8     //执行命令
9     $data = curl_exec($curl);
10     //关闭URL请求
11     curl_close($curl);
12     //显示获得的数据
13     print_r($data);
14 ?>
15
16 <?php
17     //初始化
18     $curl = curl_init();
19     //设置url
20     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
21     //设置返回获取的输出为文本流
22     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
23     //设置post方式提交
24     curl_setopt($curl, CURLOPT_POST, 1);
25     //设置post数据
26     curl_setopt($curl, CURLOPT_POSTFIELDS, array("data"=>"value");
27     //执行命令
28     $data = curl_exec($curl);
29     //关闭URL请求
30     curl_close($curl);
31     //打印数据
32     print_r($data);
33 ?>
  感兴趣的同学还可以参考php官方文档,学习更多curl用法
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104324-1-1.html 上篇帖子: php 常用函数总结 下篇帖子: 【转】 PDO使用归纳【PHP】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表