红穆笔记
首頁 語言筆記 PHP 請求api時,利用curl接收,返回數組
語言筆記 PHP

PHP 請求api時,利用curl接收,返回數組

PHP 请求api时,利用curl接收,返回数组

也不是什麼大不了的代碼,以前用file_get_content,感受總體上感覺效率不太好,我記得以前也發過類似的文章,搞忘了,現在重新記錄一下。

使用cURL庫發送HTTP請求,並設置了一些選項:

  • CURLOPT_URL: 設置請求的URL。
  • CURLOPT_TIMEOUT: 設置請求的超時時間,單位爲秒。
  • CURLOPT_RETURNTRANSFER: 將返回的結果以字符串的形式返回,而不是直接輸出。

函數接受兩個參數:

  • $durl: 請求的URL。
  • $cache: 緩存時間,以秒爲單位,默認爲0,表示不緩存。(暫未完善,因爲使用了靜態網頁)

函數通過cURL發送請求,並將返回的結果以字符串的形式保存在變量$r中。然後使用curl_close()關閉cURL會話,並使用json_decode()將返回的JSON格式數據解碼爲關聯數組。最後返回該數組。

PHP代碼

public function get_api($durl,$cache = 0)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $durl);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $r = curl_exec($ch);
        curl_close($ch);
        return json_decode($r,true);
    }

升級優化

function get_api($durl, $cache = 0)
{
    // 初始化cURL會話
    $ch = curl_init();

    // 設置cURL選項
    curl_setopt($ch, CURLOPT_URL, $durl);          // 設置請求的URL
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);          // 設置超時時間爲5秒
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // 將結果通過變量返回,而不是直接輸出

    // 獲取Referer的主機部分
    $referer_host = parse_url($durl, PHP_URL_SCHEME) . '://' . parse_url($durl, PHP_URL_HOST);
    curl_setopt($ch, CURLOPT_REFERER, $referer_host);  // 設置Referer頭,指定來源主機部分

    // 模擬瀏覽器訪問的相關選項
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.9999.999 Safari/537.36');  // 設置User-Agent頭,模擬瀏覽器
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Content-Type: application/json; charset=utf-8'
    ));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    // 執行請求並獲取響應結果
    $r = curl_exec($ch);

    // 關閉cURL會話
    curl_close($ch);

    // 解析JSON格式的響應結果,並返回解析後的數組
    return json_decode($r, true);
}

 

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 143
PHP preg

PHP preg 語言筆記 PHP

preg_match_all 函數用於執行一個全局正則表達式匹配。preg_match_all() 語法int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG…
👁 169
PHP 三元运算符与if的详解

PHP 三元運算符與if的詳解 語言筆記 PHP

三元運算符語條件 ? 結果1 : 結果2 說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。本文對三元運算符和if...else...進行對比詳解,希望對大家有所幫助。今天在改論文在線的時候遇到了一個語句看不懂:$if_summary = $row['IF_SUMMARY']=…
👁 191
PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 字符串中是否包含指定字符串的多种方法

php 字符串中是否包含指定字符串的多種方法 語言筆記 PHP

strstrstrstr() 函數搜索一個字符串在另一個字符串中的第一次出現。該函數返回字符串的其餘部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。代碼如下:<?php $email = 'user@example.com'; $domain = strstr($email, …
👁 138

推薦閱讀

响应式户外装备体育装备网站模板 0981

響應式戶外裝備體育裝備網站模板 0981 實用收藏 易優模板

此套eyoucms響應式模板適用於戶外裝備與體育裝備行業,設計風格活力戶外,能夠展示戶外裝備產品、體育用品、品牌故事及運動方案。有助於戶外體育品牌在線上展示產品,吸引運動愛好者。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結…
👁 48
响应式婴幼儿早教玩具网站模板 0297

響應式嬰幼兒早教玩具網站模板 0297 實用收藏 易優模板

此套eyoucms響應式模板適用於嬰幼兒早教與玩具行業,設計風格活潑童趣,能夠展示早教課程、玩具產品、品牌故事及教育理念。有助於早教品牌在線上吸引家長,提升品牌形象。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(…
👁 45
(自适应手机端)百度MIP建筑装饰装修类网站pbootcms模板 幕墙材料网站源码下载 0810

(自適應手機端)百度MIP建築裝飾裝修類網站pbootcms模板 幕牆材料網站源碼下載 0810 實用收藏 pbootcms模板

一款百度MIP建築裝飾裝修類PbootCMS網站模板,支持PC與WAP端。設計風格專業現代,適合展示幕牆材料、裝修工程及裝飾案例。支持百度MIP有助於提升移動端SEO效果,吸引更多流量。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.…
👁 61
(自适应手机版)响应式电子科技产品公司pbootcms网站模板 电子产品网站源码下载 0156

(自適應手機版)響應式電子科技產品公司pbootcms網站模板 電子產品網站源碼下載 0156 實用收藏 pbootcms模板

一款自適應手機版的響應式電子科技產品公司PbootCMS網站模板。設計風格充滿科技感,適合展示智能手機、電腦配件、智能硬件等電子產品。有助於科技品牌在線上建立時尚、前沿的品牌形象,吸引年輕消費羣體。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:ww…
👁 56
ChatGPT生成mardown格式文章

ChatGPT生成mardown格式文章 實用收藏 實用工具

3月2日凌晨,OpenAI放出了真正的ChatGPT API,不是背後的GPT-3.5大模型,是ChatGPT的本體模型—— ChatGPT3.5-Turbo!ChatGPT-3.5 Turbo 模型是 ChatGPT 所使用的模型,是GPT-3.5系列中最快速、最便宜、最靈活的模型。它可以提供超高…
👁 223
响应式精品手表箱包网站模板 0982

響應式精品手錶箱包網站模板 0982 實用收藏 易優模板

一款針對精品手錶與箱包行業的eyoucms響應式網站模板。設計風格高端時尚,能夠展示手錶產品、箱包系列、品牌故事及定製服務。有助於奢侈品品牌在線上展示產品,吸引高淨值客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優C…
👁 31