php的curl如何給其他服務器請求發送get、post請求

php的curl如何請求其他服務器上的數據

curl可以幹什麼?

  • curl是PHP的一個擴展,利用該擴展可以實現服務器之間的數據或文件傳輸

    也就是說curl就是一個工具,用來做服務器之間數據、文件傳輸的工具

    用來採集網絡中的html網頁文件、其他服務器提供接口數據等

開啓curl擴展

(1) 在php.ini裏面開啓curl這個擴展
(2) 將PHP的安裝路徑保存到環境變量的系統變量中(環境變量之間的分隔符是英文的分號)
(3) 重啓apache服務器
(4) 重啓計算機

發送curl分爲4步

  1. 初始化curl對應函數-> curl_init();

  2. 設置curl的請求信息,如請求地址、需要發送給目標服務器的數據、設置是否校驗https等 對應函

    數 -> curl_setop();

  3. 執行發送請求 對應函數-> curl_exec();

  4. 發送請求結束後記得關閉不適用的curl 對應函數-> curl_close();

代碼實例

<?php
// 第一步:創建一個新cURL資源
$ch = curl_init();//

// 第二步設置URL和相應的選項
//curl_setopt(
	參數1:curl資源,
    參數2:需要設置的CURLOPT_XXX選項,用來設置curl的各種請求,如是否攜帶參數,是否驗證https等,是否爲	           POST請求,根據手冊,此參數爲固定寫法。
    參數3:語句柄對應的value值
   )
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL並把它傳遞給瀏覽器
curl_exec($ch);

//關閉cURL資源,並且釋放系統資源
curl_close($ch);
?>

實例1:使用curl向https://xxx.xxx.com發送POST請求(注意這裏的$data爲json)

<?php

function request_curl()
{
    //初使化init方法
    $ch = curl_init();

    //指定URL
    curl_setopt($ch, CURLOPT_URL, 'https://xxx.aaa.com/api/createUser');

    //設定請求後返回結果
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //聲明使用POST方式來進行發送
    curl_setopt($ch, CURLOPT_POST, 1);

    //發送什麼數據到目標服務器呢
    $data = json_encode([
        'userName' => 小明,
        'age' => 18,
        'sex' => '男'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


    //忽略證書(目標服務器的接口有https證書時使用)
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    //忽略header頭信息
    curl_setopt($ch, CURLOPT_HEADER, 0);

    //設置超時時間
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    //發送請求
    $output = curl_exec($ch);

    //關閉curl
    curl_close($ch);

    //打印目標服務器返回給我們的數據
    var_vump($output);

    //返回數據
    return $output;
}

?>

實例2:使用curl發送post請求(這裏發送的數據$data爲數組類型)

<?php

function request_curl()
{
    // 1. 初始化一個cURL會話
    $ch = curl_init();
    // 2. 設置請求選項, 包括具體的url
    curl_setopt($ch, CURLOPT_URL, 'https:xxx.aaa.com/api/createdUser');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 設置請求爲post類型
    curl_setopt($ch, CURLOPT_POST, 1);
    // 添加post數據到請求中
    $data = [
        'name'=>'小明',
        'sex'=>'男',
        'age'=>18,
    ];
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    //啓用時會將頭文件的信息作爲數據流輸出
    curl_setopt($ch, CURLOPT_HEADER, 0);
    // 3. 執行一個cURL會話並且獲取相關回復
    $response = curl_exec($ch);
    // 4. 釋放cURL句柄,關閉一個cURL會話
    curl_close($ch);
    //打印返回值
    var_dump($response);
    return $response;
}

?>

實例3:發送get請求

<?php

function request_curl()
{
    // 1. 初始化一個cURL會話
    $ch = curl_init();
    //設置選項,包括URL
    curl_setopt($ch, CURLOPT_URL, 'http:xxx.aaa.com/api/user?name=小明&age=18');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //執行並獲取HTML文檔內容
    $response = curl_exec($ch);
    // 4. 釋放cURL句柄,關閉一個cURL會話
    curl_close($ch);
    return $response;
}

?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章