1. 程式人生 > 程式設計 >php curl發起get與post網路請求案例詳解

php curl發起get與post網路請求案例詳解

curl介紹

curl是一個開源的網路連結庫,支援http,https,ftp,gopher,telnet,dict,file,and ldap 協議。之前均益介紹了版本的pycurl https://www.jb51.net/article/221508.htm ,現在介紹怎麼使用版本的URL.

curl get請求

function curl_get($url){
 
   $header = array(
       'Accept: application/on',);
    $curl = curl_init();
    //設定抓取的url
    curl_setopt($curl,CURLOPT_URL,$url);
    //設定標頭檔案的資訊作為資料流輸出
    curl_setopt($curl,CURLOPT_HEhttp://www.cppcns.com
ADER,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); //執行命令 http://www.cppcns.com
$data = curl_exec($curl); // 顯示錯誤資訊 if (curl_error($curl)) { print "Error: " . curl_error($curl); } else { // 列印返回的內容 var_dump($data); curl_close($curl); } }

curl post請求

// $url 是請求的連結
// $postdata 是傳輸的資料,陣列格式
function curl_post( $url,$postdata ) {
 
   $header = array(
       'Accept: application/json',);
 
    //初始化
    $curl = curl_init();
    //設定抓取的url
    curl_setopt($curl,CURLOPT_HEADER,0);
    //設定獲取的資訊以檔案流的形式返回,而不是直接輸出。
    curl_setopt($curl,1);
    // 超時設定
    curl_setopt($curl,10);
 
    // 超時設定,以毫秒為單位
    // curl_setopt($curl,$header);
 
    curl_setopt($curl,FALSE );
    curl_setopt($curl,FALSE );
 
    //設定post方式提交
    curl_setopt($curl,CURLOPT_POST,CURLOPT_POSTFIELDS,$postdata);
    //執行命令
    $data = curl_exec($curl);
 
    // 顯示錯誤資訊
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 列印返回的內容
        var_dump($data);
        curl_close($curl);
    }
}

常用引數

     
選項 將 value 設定為 備註
CURLOPT_AUTOREFERER TRUE 時將根據 Location: 重定向時,自動設定 header 中的Referer:資訊。  
CURLOPT_BINARYTRANSFER 設為 TRUE ,將在啟用 CURLOPT_RETURNTRANSFER 時,返回原生的(Raw)輸出。 從 PHP 5.1.3 開始,此選項不再有效果:使用CURLOPT_RETURNTRANSFER 後總是會返回原生的(Raw)內容。
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 將讓庫執行所有需要的代理、驗證、連線過程,但不傳輸資料。此選項用於 HTTP、SMTP 和 POP3。 在 7.15.2 中新增。 PHP 5.5.0 起有效。
CURLOPT_CRLF 啟用時將Unix的換行符轉換成回車換行符。  
CURLOPT_DNS_USE_GLOBAL_CACHE TRUE 會啟用一個全域性的DNS快取。此選項非執行緒安全的,預設已開啟。  
CURLOPT_FAILONERROR 當 HTTP 狀態碼大於等於 400,TRUE 將將顯示錯誤詳情。 預設情況下將返回頁面,忽略 HTTP 程式碼。  
CURLOPT_SSL_FALSESTART TRUE 開啟 TLS False Start (一種 TLS 握手優化方式) cURL 7.42.0 中新增。自 PHP 7.0.7 起有效。
CURLOPT_FILETIME TRUE 時,會嘗試獲取遠端文件中的修改時間資訊。 資訊可通過curl_getinfo()函式的CURLINFO_FILETIME 選項獲取。  
CURLOPT_FOLLOWLOCATION TRUE 時將會根據伺服器返回 HTTP 頭中的 "Location: " 重定向。(注意:這是遞迴的,"Location: " 傳送幾次就重定向幾次,除非設定了 CURLOPT_MAXREDIRS,限制最大重定向次數。)。  
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 操作不存在的目錄時將建立它。  
CURLOPT_FTPAPPEND TRUE 為追加寫入檔案,而不是覆蓋。  
CURLOPT_TCP_NODELAY TRUE 時禁用 TCP 的 Nagle 演算法,就是減少網路上的小包數量。 PHP 5.2.1 有效,編譯時需要 libcurl 7.11.2 及以上。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT 的別名。  
CURLOPT_FTPLISTONLY TRUE 時只列出 FTP 目錄的名字。  
CURLOPT_HEADER 啟用時會將標頭檔案的資訊作為資料流輸出。  
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 函式。 在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作為代替)
CURLOPT_NETRC TRUE 時,在連線建立時,訪問~/.netrc檔案獲取使用者名稱和密碼來連線遠端站點。  
CURLOPT_NOBODY TRUE 時將不輸出 BODY 部分。同時 Mehtod 變成了 HEAD。修改為 FALSE時不會變成 GET。  
CURLOPT_NOPROGRESS TRUE 時關閉 cURL 的傳輸進度。 Note: PHP 預設自動設定此選項為 TRUE,只有為了除錯才需要改變設定。  
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 時會發送 POST 請求,型別為:application/x-www-form-urlencoded,是 HTML 表單提交時最常見的一種。  
CURLOPT_PUT TRUE 時允許 HTTP 傳送檔案。要被 PUT 的檔案必須在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中設定。  
CURLOPT_RETURNTRANSFER TRUE 將curl_exec()獲取的資訊以字串返回,而不是直接輸出。  
CURLOPT_Shttp://www.cppcns.comAFE_UPLOAD TRUE 禁用 @ 字首在 CURLOPT_POSTFIELDS 中傳送檔案。 意味著 @ 可以在欄位中安全得使用了。 可使用 CURLFile 作為上傳的代替。 PHP 5.5.0 中新增,預設值 FALSE。 PHP 5.6.0 改預設值為 TRUE。. PHP 7 刪除了此選項, 必須使用 CURLFile interface 來上傳檔案。
CURLOPT_SASL_IR TRUE 開啟,收到首包(first packet)後傳送初始的響應(initial response)。 cURL 7.31.10 中新增,自 PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_ALPN FALSE 禁用 SSL 握手中的 ALPN (如果 SSL 後端的 libcurl 內建支援) 用於協商到 http2。 cURL 7.36.0 中增加, PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_NPN FALSE 禁用 SSL 握手中的 NPN(如果 SSL 後端的 libcurl 內建支援),用於協商到 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 驗證證書狀態。 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 不傳送 TFTP 的 options 請求。 自 cURL 7.48.0 新增, PHP 7.0.7 起有效。
CURLOPT_TRANSFERTEXT TRUE 對 FTP 傳輸使用 ASCII 模式。對於LDAP,它檢索純文字資訊而非 HTML。在 Windows 系統上,系統不會把 STDOUT 設定成二進位制 模式。  
CURLOPT_UNRESTRICTED_AUTH TRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多個 location 時繼續傳送使用者名稱和密碼資訊,哪怕主機名已改變。  
CURLOPT_UPLOAD TRUE 準備上傳。  
CURLOPT_VERBOSE TRUE 會輸出所有的資訊,寫入到STDERR,或在CURLOPT_STDERR中指定的檔案。  

到此這篇關於php curl發起get與post網路請求案例詳解的文章就介紹到這了,更多相關php curl發起get與post網路請求內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!