日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

CURL是一個非常強大的開源庫,它支持很多種協議,例如,HTTP、HTTPS、FTP、TELENT等。日常開發中,我們經常會需要用到curl向其他系統api訪問。

使用

要想使用CURL,大致需要如下流程:

  1. 初始化CURL句柄
  2. 設置選項
  3. 執行并獲取結果
  4. 釋放CURL句柄

參見如下示例:

<?php
$ch = curl_init();
 
curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 
$output = curl_exec($ch);
if($output === FALSE ){
  echo "error:".curl_error($ch);
}
 
curl_close($ch);
 
 
echo $output;

在上面的代碼中,我們使用curl_init函數來初始化curl句柄,然后多次調用curl_setopt函數來設置多個選項,隨后我們調用curl_exec函數執行發送HTTP請求并從遠端接收相應數據,最終我們調用curl_close關閉curl句柄進行資源釋放。

運行這段代碼,我們可以看到控制臺下,會輸出百度的頁面信息。

對于選項部分:

  • CURLOPT_URL——設置請求的url及其使用的協議;
  • CURLOPT_RETURNTRANSFER——設置為1,表示返回的響應數據不會被從標準輸出輸出,而是作為返回值傳遞給output變量;否則,返回內容會被直接輸出到標準輸出,而返回值是錯誤號;

以上我們就完成了一個簡單的CURL使用。

 


下面我們看看如何設置GET和POST請求:

Get請求

其實我們上面的例子就是get請求,如果需要用到請求參數,可以直接在設置CURLOPT_URL選項時帶上請求參數。如下增加了一個hi參數,其值為hello:

curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com?hi=hello");

Post請求

對于POST請求,我們對最開始的例子做一些修改即可,代碼如下:

curl_setopt($ch,CURLOPT_URL,"http://127.0.0.1/");
curl_setopt($ch, CURLOPT_POSTFIELDS, 'hello=world');
curl_setopt($ch, CURLOPT_POST, true);

首先,我們將CURLOPT_URL選項的url改為本地環回地址的80端口。

其次,我們加入了CURLOPT_POSTFIELDS來設置post請求中參數字段。

最后,我們設置CURLOPT_POST選項為true,表示我們將發送一個POST類型請求。

curl_setopt函數的第二個參數種類非常多,可以參考php官方站點中curl_getinfo函數的opt參數內容,在需要時進行設置。

下面,我們在本地啟用nc來監聽80端口,這樣可以看到curl發來的請求,以驗證結果:

curl_setopt函數的第二個參數種類非常多,可以參考php官方站點中curl_getinfo函數的opt參數內容,在需要時進行設置。$ nc -l 80
POST / HTTP/1.1
Host: 127.0.0.1
Accept: */*
Content-Length: 11
Content-Type: Application/x-www-form-urlencoded
 
hello=world

可以看到,nc中收到php發來的請求是POST請求,且我們的post參數在請求體中,并且請求頭部也加入了content-相關字段指定數據大小和類型等。

 


下面,我們再來看看curl還能夠給我們哪些有用信息。

獲取請求響應的相關信息

利用curl_getinfo函數,我們可以獲取更多的與請求和響應相關的信息。只需要在curl_exec之后執行如下調用:

$info = curl_getinfo($ch);

我們可以看下info都包含些什么,以前面的例子為例,我們去掉最后的echo,然后在curl_exec后加入:

$info = curl_getinfo($ch);
foreach ($info as $k => $v) {
    echo $k.": ".$v."n";
}

輸出信息如下:

url: http://www.baidu.com/      #網絡地址
content_type: text/html         #響應數據類型
http_code: 200                  #http響應碼
header_size: 750                #響應頭大小
request_size: 52                #請求大小
filetime: -1                    #文件創建的時間
ssl_verify_result: 0            #SSL驗證結果
redirect_count: 0               #跳轉計數
total_time: 0.028716            #總耗時
namelookup_time: 0.004372       #DNS查詢耗時
connect_time: 0.019615          #等待連接耗時
pretransfer_time: 0.019732      #傳輸前準備耗時
size_upload: 0                  #上傳數據大小
size_download: 14613            #下載數據大小
speed_download: 508880          #下載速度
speed_upload: 0                 #上傳速度
download_content_length: 14613  #下載內容長度
upload_content_length: -1       #上傳內容長度
starttransfer_time: 0.027137    #直到首字節傳輸開始的耗時
redirect_time: 0                #重定向耗時
redirect_url:                   #重定向url
primary_ip: 119.75.216.20       #DNS解析后首選地址
certinfo: Array                 #TLS的證書鏈
primary_port: 80                #遠端端口
local_ip: 192.168.1.xxx         #本地ip
local_port: 51210               #本地端口

這里,碼哥對字段做了標注。可以看到,不僅可以獲取基本的響應信息,還可以獲取公網地址、網速、耗時等信息。

 

以上就是curl的簡單使用。

分享到:
標簽:PHP Curl
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定