搜尋
首頁php教程php手册php的curl也没这么复杂

许多同学在第一次使用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 ?>



陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版