curl是一個開源的網(wǎng)絡鏈接庫,支持http, https, ftp, gopher, telnet, dict, file, and ldap 協(xié)議。之前均益介紹了python版本的pycurl https://www.jb51.net/article/221508.htm ,現(xiàn)在介紹怎么使用php版本的URL.
function curl_get($url){ $header = array( 'Accept: application/json', ); $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設置頭文件的信息作為數(shù)據(jù)流輸出 curl_setopt($curl, CURLOPT_HEADER, 0); // 超時設置,以秒為單位 curl_setopt($curl, CURLOPT_TIMEOUT, 1); // 超時設置,以毫秒為單位 // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500); // 設置請求頭 curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //執(zhí)行命令 $data = curl_exec($curl); // 顯示錯誤信息 if (curl_error($curl)) { print "Error: " . curl_error($curl); } else { // 打印返回的內(nèi)容 var_dump($data); curl_close($curl); } }
// $url 是請求的鏈接 // $postdata 是傳輸?shù)臄?shù)據(jù),數(shù)組格式 function curl_post( $url, $postdata ) { $header = array( 'Accept: application/json', ); //初始化 $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設置頭文件的信息作為數(shù)據(jù)流輸出 curl_setopt($curl, CURLOPT_HEADER, 0); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 超時設置 curl_setopt($curl, CURLOPT_TIMEOUT, 10); // 超時設置,以毫秒為單位 // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500); // 設置請求頭 curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE ); //設置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); //執(zhí)行命令 $data = curl_exec($curl); // 顯示錯誤信息 if (curl_error($curl)) { print "Error: " . curl_error($curl); } else { // 打印返回的內(nèi)容 var_dump($data); curl_close($curl); } }
選項 | 將 value 設置為 | 備注 |
---|---|---|
CURLOPT_AUTOREFERER | TRUE 時將根據(jù) Location: 重定向時,自動設置 header 中的Referer:信息。 | |
CURLOPT_BINARYTRANSFER | 設為 TRUE ,將在啟用 CURLOPT_RETURNTRANSFER 時,返回原生的(Raw)輸出。 | 從 PHP 5.1.3 開始,此選項不再有效果:使用CURLOPT_RETURNTRANSFER 后總是會返回原生的(Raw)內(nèi)容。 |
CURLOPT_COOKIESESSION | 設為 TRUE 時將開啟新的一次 cookie 會話。它將強制 libcurl 忽略之前會話時存的其他 cookie。 libcurl 在默認狀況下無論是否為會話,都會儲存、加載所有 cookie。會話 cookie 是指沒有過期時間,只存活在會話之中。 | |
CURLOPT_CERTINFO | TRUE 將在安全傳輸時輸出 SSL 證書信息到 STDERR。 | 在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要開啟 CURLOPT_VERBOSE 才有效。 |
CURLOPT_CONNECT_ONLY | TRUE 將讓庫執(zhí)行所有需要的代理、驗證、連接過程,但不傳輸數(shù)據(jù)。此選項用于 HTTP、SMTP 和 POP3。 | 在 7.15.2 中添加。 PHP 5.5.0 起有效。 |
CURLOPT_CRLF | 啟用時將Unix的換行符轉(zhuǎn)換成回車換行符。 | |
CURLOPT_DNS_USE_GLOBAL_CACHE | TRUE 會啟用一個全局的DNS緩存。此選項非線程安全的,默認已開啟。 | |
CURLOPT_FAILONERROR | 當 HTTP 狀態(tài)碼大于等于 400,TRUE 將將顯示錯誤詳情。 默認情況下將返回頁面,忽略 HTTP 代碼。 | |
CURLOPT_SSL_FALSESTART | TRUE 開啟 TLS False Start (一種 TLS 握手優(yōu)化方式) | cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 |
CURLOPT_FILETIME | TRUE 時,會嘗試獲取遠程文檔中的修改時間信息。 信息可通過curl_getinfo()函數(shù)的CURLINFO_FILETIME 選項獲取。 | |
CURLOPT_FOLLOWLOCATION | TRUE 時將會根據(jù)服務器返回 HTTP 頭中的 "Location: " 重定向。(注意:這是遞歸的,"Location: " 發(fā)送幾次就重定向幾次,除非設置了 CURLOPT_MAXREDIRS,限制最大重定向次數(shù)。)。 | |
CURLOPT_FORBID_REUSE | TRUE 在完成交互以后強制明確的斷開連接,不能在連接池中重用。 | |
CURLOPT_FRESH_CONNECT | TRUE 強制獲取一個新的連接,而不是緩存中的連接。 | |
CURLOPT_FTP_USE_EPRT | TRUE 時,當 FTP 下載時,使用 EPRT (和 LPRT)命令。 設置為 FALSE 時禁用 EPRT 和 LPRT,僅僅使用PORT 命令。 | |
CURLOPT_FTP_USE_EPSV | TRUE 時,在FTP傳輸過程中,回到 PASV 模式前,先嘗試 EPSV 命令。設置為 FALSE 時禁用 EPSV。 | |
CURLOPT_FTP_CREATE_MISSING_DIRS | TRUE 時,當 ftp 操作不存在的目錄時將創(chuàng)建它。 | |
CURLOPT_FTPAPPEND | TRUE 為追加寫入文件,而不是覆蓋。 | |
CURLOPT_TCP_NODELAY | TRUE 時禁用 TCP 的 Nagle 算法,就是減少網(wǎng)絡上的小包數(shù)量。 | PHP 5.2.1 有效,編譯時需要 libcurl 7.11.2 及以上。 |
CURLOPT_FTPASCII | CURLOPT_TRANSFERTEXT 的別名。 | |
CURLOPT_FTPLISTONLY | TRUE 時只列出 FTP 目錄的名字。 | |
CURLOPT_HEADER | 啟用時會將頭文件的信息作為數(shù)據(jù)流輸出。 | |
CURLINFO_HEADER_OUT | TRUE 時追蹤句柄的請求字符串。 | 從 PHP 5.1.3 開始可用。CURLINFO_ 的前綴是有意的(intentional)。 |
CURLOPT_HTTPGET | TRUE 時會設置 HTTP 的 method 為 GET,由于默認是 GET,所以只有 method 被修改時才需要這個選項。 | |
CURLOPT_HTTPPROXYTUNNEL | TRUE 會通過指定的 HTTP 代理來傳輸。 | |
CURLOPT_MUTE | TRUE 時將完全靜默,無論是何 cURL 函數(shù)。 | 在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作為代替) |
CURLOPT_NETRC | TRUE 時,在連接建立時,訪問~/.netrc文件獲取用戶名和密碼來連接遠程站點。 | |
CURLOPT_NOBODY | TRUE 時將不輸出 BODY 部分。同時 Mehtod 變成了 HEAD。修改為 FALSE時不會變成 GET。 | |
CURLOPT_NOPROGRESS | TRUE 時關(guān)閉 cURL 的傳輸進度。 Note: PHP 默認自動設置此選項為 TRUE,只有為了調(diào)試才需要改變設置。 | |
CURLOPT_NOSIGNAL | TRUE 時忽略所有的 cURL 傳遞給 PHP 進行的信號。在 SAPI 多線程傳輸時此項被默認啟用,所以超時選項仍能使用。 | cURL 7.10時被加入。 |
CURLOPT_PATH_AS_IS | TRUE 不處理 dot dot sequences (即 ../ ) | cURL 7.42.0 時被加入。 PHP 7.0.7 起有效。 |
CURLOPT_PIPEWAIT | TRUE 則等待 pipelining/multiplexing。 | cURL 7.43.0 時被加入。 PHP 7.0.7 起有效。 |
CURLOPT_POST | TRUE 時會發(fā)送 POST 請求,類型為:application/x-www-form-urlencoded,是 HTML 表單提交時最常見的一種。 | |
CURLOPT_PUT | TRUE 時允許 HTTP 發(fā)送文件。要被 PUT 的文件必須在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中設置。 | |
CURLOPT_RETURNTRANSFER | TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。 | |
CURLOPT_SAFE_UPLOAD | TRUE 禁用 @ 前綴在 CURLOPT_POSTFIELDS 中發(fā)送文件。 意味著 @ 可以在字段中安全得使用了。 可使用 CURLFile 作為上傳的代替。 | PHP 5.5.0 中添加,默認值 FALSE。 PHP 5.6.0 改默認值為 TRUE。. PHP 7 刪除了此選項, 必須使用 CURLFile interface 來上傳文件。 |
CURLOPT_SASL_IR | TRUE 開啟,收到首包(first packet)后發(fā)送初始的響應(initial response)。 | cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。 |
CURLOPT_SSL_ENABLE_ALPN | FALSE 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 內(nèi)建支持) 用于協(xié)商到 http2。 | cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
CURLOPT_SSL_ENABLE_NPN | FALSE 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 內(nèi)建支持),用于協(xié)商到 http2。 | cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
CURLOPT_SSL_VERIFYPEER | FALSE 禁止 cURL 驗證對等證書(peer's certificate)。要驗證的交換證書可以在 CURLOPT_CAINFO 選項中設置,或在 CURLOPT_CAPATH中設置證書目錄。 | 自cURL 7.10開始默認為 TRUE。從 cURL 7.10開始默認綁定安裝。 |
CURLOPT_SSL_VERIFYSTATUS | TRUE 驗證證書狀態(tài)。 | cURL 7.41.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_TCP_FASTOPEN | TRUE 開啟 TCP Fast Open。 | cURL 7.49.0 中添加, PHP 7.0.7 起有效。 |
CURLOPT_TFTP_NO_OPTIONS | TRUE 不發(fā)送 TFTP 的 options 請求。 | 自 cURL 7.48.0 添加, PHP 7.0.7 起有效。 |
CURLOPT_TRANSFERTEXT | TRUE 對 FTP 傳輸使用 ASCII 模式。對于LDAP,它檢索純文本信息而非 HTML。在 Windows 系統(tǒng)上,系統(tǒng)不會把 STDOUT 設置成二進制 模式。 | |
CURLOPT_UNRESTRICTED_AUTH | TRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多個 location 時繼續(xù)發(fā)送用戶名和密碼信息,哪怕主機名已改變。 | |
CURLOPT_UPLOAD | TRUE 準備上傳。 | |
CURLOPT_VERBOSE | TRUE 會輸出所有的信息,寫入到STDERR,或在CURLOPT_STDERR中指定的文件。 |
到此這篇關(guān)于php curl發(fā)起get與post網(wǎng)絡請求案例詳解的文章就介紹到這了,更多相關(guān)php curl發(fā)起get與post網(wǎng)絡請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!