php的curl也没有这么复杂
程序员文章站
2024-01-11 11:45:22
...
php的curl也没这么复杂
许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了
首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)
1 php 2 $data = "[...] "; 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 php17 //初始化18 $curl = curl_init();19 //设置url20 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用法
- 2楼Ronaldo7
- 你能post数据到baidu????????
- Re: 深蓝的镰刀
- @Ronaldo7,举个栗子吧
- 1楼安度
- 你和深蓝的右手什么关系
- Re: 深蓝的镰刀
- @安度,我记得没错他应该是专注游戏引擎的大神吧
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
- 最新文章
- 热门排行
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论