• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php的curl也没这么复杂

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

许多同学在第一次使用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等其他协议)

现在再看代码,实际上代码只做了五件事情

  1. curl_init()初始化curl
  2. curl_setopt()设置传输数据和参数
  3. curl_exec()执行传输并获取返回数据
  4. curl_errono()返回错误码
  5. 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用法

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP_保留两位小数并且四舍五入_保留两位小数并且不四舍五入发布时间:2022-07-10
下一篇:
redis在php中的应用(key篇)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap