主頁 > 知識庫 > php curl發(fā)起get與post網(wǎng)絡(luò)請求案例詳解

php curl發(fā)起get與post網(wǎng)絡(luò)請求案例詳解

熱門標(biāo)簽:電子圍欄 科大訊飛語音識別系統(tǒng) 團(tuán)購網(wǎng)站 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) Linux服務(wù)器 服務(wù)器配置 阿里云

curl介紹

curl是一個(gè)開源的網(wǎng)絡(luò)鏈接庫,支持http, https, ftp, gopher, telnet, dict, file, and ldap 協(xié)議。之前均益介紹了python版本的pycurl https://www.jb51.net/article/221508.htm ,現(xiàn)在介紹怎么使用php版本的URL.

curl get請求

function curl_get($url){
 
   $header = array(
       'Accept: application/json',
    );
    $curl = curl_init();
    //設(shè)置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //設(shè)置頭文件的信息作為數(shù)據(jù)流輸出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 超時(shí)設(shè)置,以秒為單位
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
 
    // 超時(shí)設(shè)置,以毫秒為單位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
 
    // 設(shè)置請求頭
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    //設(shè)置獲取的信息以文件流的形式返回,而不是直接輸出。
    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);
 
    // 顯示錯(cuò)誤信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的內(nèi)容
        var_dump($data);
        curl_close($curl);
    }
}

curl post請求

// $url 是請求的鏈接
// $postdata 是傳輸?shù)臄?shù)據(jù),數(shù)組格式
function curl_post( $url, $postdata ) {
 
   $header = array(
       'Accept: application/json',
    );
 
    //初始化
    $curl = curl_init();
    //設(shè)置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //設(shè)置頭文件的信息作為數(shù)據(jù)流輸出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    //設(shè)置獲取的信息以文件流的形式返回,而不是直接輸出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // 超時(shí)設(shè)置
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
 
    // 超時(shí)設(shè)置,以毫秒為單位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
 
    // 設(shè)置請求頭
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );
 
    //設(shè)置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    //執(zhí)行命令
    $data = curl_exec($curl);
 
    // 顯示錯(cuò)誤信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的內(nèi)容
        var_dump($data);
        curl_close($curl);
    }
}

常用參數(shù)

選項(xiàng) 將 value 設(shè)置為 備注
CURLOPT_AUTOREFERER TRUE 時(shí)將根據(jù) Location: 重定向時(shí),自動設(shè)置 header 中的Referer:信息。  
CURLOPT_BINARYTRANSFER 設(shè)為 TRUE ,將在啟用 CURLOPT_RETURNTRANSFER 時(shí),返回原生的(Raw)輸出。 從 PHP 5.1.3 開始,此選項(xiàng)不再有效果:使用CURLOPT_RETURNTRANSFER 后總是會返回原生的(Raw)內(nèi)容。
CURLOPT_COOKIESESSION 設(shè)為 TRUE 時(shí)將開啟新的一次 cookie 會話。它將強(qiáng)制 libcurl 忽略之前會話時(shí)存的其他 cookie。 libcurl 在默認(rèn)狀況下無論是否為會話,都會儲存、加載所有 cookie。會話 cookie 是指沒有過期時(shí)間,只存活在會話之中。  
CURLOPT_CERTINFO TRUE 將在安全傳輸時(shí)輸出 SSL 證書信息到 STDERR。 在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要開啟 CURLOPT_VERBOSE 才有效。
CURLOPT_CONNECT_ONLY TRUE 將讓庫執(zhí)行所有需要的代理、驗(yàn)證、連接過程,但不傳輸數(shù)據(jù)。此選項(xiàng)用于 HTTP、SMTP 和 POP3。 在 7.15.2 中添加。 PHP 5.5.0 起有效。
CURLOPT_CRLF 啟用時(shí)將Unix的換行符轉(zhuǎn)換成回車換行符。  
CURLOPT_DNS_USE_GLOBAL_CACHE TRUE 會啟用一個(gè)全局的DNS緩存。此選項(xiàng)非線程安全的,默認(rèn)已開啟。  
CURLOPT_FAILONERROR 當(dāng) HTTP 狀態(tài)碼大于等于 400,TRUE 將將顯示錯(cuò)誤詳情。 默認(rèn)情況下將返回頁面,忽略 HTTP 代碼。  
CURLOPT_SSL_FALSESTART TRUE 開啟 TLS False Start (一種 TLS 握手優(yōu)化方式) cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。
CURLOPT_FILETIME TRUE 時(shí),會嘗試獲取遠(yuǎn)程文檔中的修改時(shí)間信息。 信息可通過curl_getinfo()函數(shù)的CURLINFO_FILETIME 選項(xiàng)獲取。  
CURLOPT_FOLLOWLOCATION TRUE 時(shí)將會根據(jù)服務(wù)器返回 HTTP 頭中的 "Location: " 重定向。(注意:這是遞歸的,"Location: " 發(fā)送幾次就重定向幾次,除非設(shè)置了 CURLOPT_MAXREDIRS,限制最大重定向次數(shù)。)。  
CURLOPT_FORBID_REUSE TRUE 在完成交互以后強(qiáng)制明確的斷開連接,不能在連接池中重用。  
CURLOPT_FRESH_CONNECT TRUE 強(qiáng)制獲取一個(gè)新的連接,而不是緩存中的連接。  
CURLOPT_FTP_USE_EPRT TRUE 時(shí),當(dāng) FTP 下載時(shí),使用 EPRT (和 LPRT)命令。 設(shè)置為 FALSE 時(shí)禁用 EPRT 和 LPRT,僅僅使用PORT 命令。  
CURLOPT_FTP_USE_EPSV TRUE 時(shí),在FTP傳輸過程中,回到 PASV 模式前,先嘗試 EPSV 命令。設(shè)置為 FALSE 時(shí)禁用 EPSV。  
CURLOPT_FTP_CREATE_MISSING_DIRS TRUE 時(shí),當(dāng) ftp 操作不存在的目錄時(shí)將創(chuàng)建它。  
CURLOPT_FTPAPPEND TRUE 為追加寫入文件,而不是覆蓋。  
CURLOPT_TCP_NODELAY TRUE 時(shí)禁用 TCP 的 Nagle 算法,就是減少網(wǎng)絡(luò)上的小包數(shù)量。 PHP 5.2.1 有效,編譯時(shí)需要 libcurl 7.11.2 及以上。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT 的別名。  
CURLOPT_FTPLISTONLY TRUE 時(shí)只列出 FTP 目錄的名字。  
CURLOPT_HEADER 啟用時(shí)會將頭文件的信息作為數(shù)據(jù)流輸出。  
CURLINFO_HEADER_OUT TRUE 時(shí)追蹤句柄的請求字符串。 從 PHP 5.1.3 開始可用。CURLINFO_ 的前綴是有意的(intentional)。
CURLOPT_HTTPGET TRUE 時(shí)會設(shè)置 HTTP 的 method 為 GET,由于默認(rèn)是 GET,所以只有 method 被修改時(shí)才需要這個(gè)選項(xiàng)。  
CURLOPT_HTTPPROXYTUNNEL TRUE 會通過指定的 HTTP 代理來傳輸。  
CURLOPT_MUTE TRUE 時(shí)將完全靜默,無論是何 cURL 函數(shù)。 在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作為代替)
CURLOPT_NETRC TRUE 時(shí),在連接建立時(shí),訪問~/.netrc文件獲取用戶名和密碼來連接遠(yuǎn)程站點(diǎn)。  
CURLOPT_NOBODY TRUE 時(shí)將不輸出 BODY 部分。同時(shí) Mehtod 變成了 HEAD。修改為 FALSE時(shí)不會變成 GET。  
CURLOPT_NOPROGRESS TRUE 時(shí)關(guān)閉 cURL 的傳輸進(jìn)度。 Note: PHP 默認(rèn)自動設(shè)置此選項(xiàng)為 TRUE,只有為了調(diào)試才需要改變設(shè)置。  
CURLOPT_NOSIGNAL TRUE 時(shí)忽略所有的 cURL 傳遞給 PHP 進(jìn)行的信號。在 SAPI 多線程傳輸時(shí)此項(xiàng)被默認(rèn)啟用,所以超時(shí)選項(xiàng)仍能使用。 cURL 7.10時(shí)被加入。
CURLOPT_PATH_AS_IS TRUE 不處理 dot dot sequences (即 ../ ) cURL 7.42.0 時(shí)被加入。 PHP 7.0.7 起有效。
CURLOPT_PIPEWAIT TRUE 則等待 pipelining/multiplexing。 cURL 7.43.0 時(shí)被加入。 PHP 7.0.7 起有效。
CURLOPT_POST TRUE 時(shí)會發(fā)送 POST 請求,類型為:application/x-www-form-urlencoded,是 HTML 表單提交時(shí)最常見的一種。  
CURLOPT_PUT TRUE 時(shí)允許 HTTP 發(fā)送文件。要被 PUT 的文件必須在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中設(shè)置。  
CURLOPT_RETURNTRANSFER TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。  
CURLOPT_SAFE_UPLOAD TRUE 禁用 @ 前綴在 CURLOPT_POSTFIELDS 中發(fā)送文件。 意味著 @ 可以在字段中安全得使用了。 可使用 CURLFile 作為上傳的代替。 PHP 5.5.0 中添加,默認(rèn)值 FALSE。 PHP 5.6.0 改默認(rèn)值為 TRUE。. PHP 7 刪除了此選項(xiàng), 必須使用 CURLFile interface 來上傳文件。
CURLOPT_SASL_IR TRUE 開啟,收到首包(first packet)后發(fā)送初始的響應(yīng)(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 驗(yàn)證對等證書(peer's certificate)。要驗(yàn)證的交換證書可以在 CURLOPT_CAINFO 選項(xiàng)中設(shè)置,或在 CURLOPT_CAPATH中設(shè)置證書目錄。 自cURL 7.10開始默認(rèn)為 TRUE。從 cURL 7.10開始默認(rèn)綁定安裝。
CURLOPT_SSL_VERIFYSTATUS TRUE 驗(yàn)證證書狀態(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 設(shè)置成二進(jìn)制 模式。  
CURLOPT_UNRESTRICTED_AUTH TRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多個(gè) location 時(shí)繼續(xù)發(fā)送用戶名和密碼信息,哪怕主機(jī)名已改變。  
CURLOPT_UPLOAD TRUE 準(zhǔn)備上傳。  
CURLOPT_VERBOSE TRUE 會輸出所有的信息,寫入到STDERR,或在CURLOPT_STDERR中指定的文件。  

到此這篇關(guān)于php curl發(fā)起get與post網(wǎng)絡(luò)請求案例詳解的文章就介紹到這了,更多相關(guān)php curl發(fā)起get與post網(wǎng)絡(luò)請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談PHP模擬發(fā)送POST請求之curl基本使用
  • php的curl攜帶header請求頭信息實(shí)現(xiàn)http訪問的方法
  • php遠(yuǎn)程請求CURL實(shí)例教程(爬蟲、保存登錄狀態(tài))
  • PHP如何使用cURL實(shí)現(xiàn)Get和Post請求
  • php curl返回錯(cuò)誤碼60如何解決

標(biāo)簽:大理 棗莊 廣元 衢州 萍鄉(xiāng) 衡水 蚌埠 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php curl發(fā)起get與post網(wǎng)絡(luò)請求案例詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266