许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了
首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)
1
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
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
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 ?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器