成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何在PHP中封裝一個請求類-創(chuàng)新互聯

這篇文章給大家介紹如何在PHP中封裝一個請求類,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

察布查爾錫伯ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

1.源碼


<?php
namespace app\common\components;
use Yii;
use app\common\services\BaseService;
class HttpClient extends BaseService{
  private static $headers = [];
  private static $cookie = null;
  public static function get($url, $param =[]) {
    return self::curl($url, $param,"get");
  }
  public static function post($url, $param,$extra = [] ) {
    return self::curl($url, $param,"post");
  }
  protected static function curl($url, $param, $method = 'post')
  {
    $calculate_time1 = microtime(true);
    // 初始華
    $curl = curl_init();
    // 設置url
    curl_setopt($curl, CURLOPT_URL, $url);
    // 設置為0表示不返回HTTP頭部信息
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 設置為1返回將curl_exec()獲取的信息以字符串返回,而不是直接輸出 設置為0返回true/false
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // TRUE 將在安全傳輸時輸出 SSL 證書信息到 STDERR。
    curl_setopt($curl, CURLOPT_CERTINFO , true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    // FALSE 禁止 cURL 驗證對等證書
    // 交換證書可以在 CURLOPT_CAINFO 選項中設置,CURLOPT_CAPATH中設置證書目錄。
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
      if( isset( Yii::$app->params['curl'] ) && isset(Yii::$app->params['curl']['timeout']) ){
      curl_setopt($curl, CURLOPT_TIMEOUT, Yii::$app->params['curl']['timeout']);
    }else{
      curl_setopt($curl, CURLOPT_TIMEOUT, 5);
    }
    // array_key_exists — 檢查數組里是否有指定的鍵名或索引
      // CURLOPT_USERAGENT在HTTP請求中包含一個"User-Agent: "頭的字符串
    if(array_key_exists("HTTP_USER_AGENT",$_SERVER)){
      curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    }
    // CURLOPT_HTTPHEADER設置 HTTP 頭字段的數組。格式: array('Content-type: text/plain', 'Content-length: 100')
    if(!empty(self::$headers)){
      $headerArr = [];
      foreach( self::$headers as $n => $v ) {
        $headerArr[] = $n .': ' . $v;
      }
      curl_setopt ($curl, CURLOPT_HTTPHEADER , $headerArr ); //構造IP
    }
    // CURLOPT_COOKIE設定 HTTP 請求中"Cookie: "部分的內容。多個 cookie 用分號分隔,分號后帶一個空格(例如, "fruit=apple; colour=red")。
    if( self::$cookie ){
      curl_setopt($curl, CURLOPT_COOKIE, self::$cookie);
    }
    // post處理 :TRUE 時會發(fā)送 POST 請求,類型為:application/x-www-form-urlencoded,是 HTML 表單提交時最常見的一種。
    if ($method == 'post')
    {
      curl_setopt($curl, CURLOPT_POST, TRUE);
      // 如果為數組就變成字符串
      if(is_array($param)){
        $param = http_build_query($param);
      }
      // 全部數據使用HTTP協(xié)議中的 "POST" 操作來發(fā)送。 要發(fā)送文件,在文件名前面加上@前綴并使用完整路徑。
      curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
    }else{
      //get請求
      curl_setopt($curl, CURLOPT_POST, FALSE);
    }
    // 執(zhí)行輸出
    $info = curl_exec($curl);
    //log:返回最后一次的錯誤代碼
    $_errno = curl_errno($curl);
    $_error = '';
    if($_errno)
    {
      // 返回當前會話最后一次錯誤的字符串
      $_error = curl_error($curl);
    }
    curl_close($curl);
    // 花費的時間
    $calculate_time_span = microtime(true) - $calculate_time1;
    $log = \Yii::$app->getRuntimePath().DIRECTORY_SEPARATOR.'curl.log';
    // int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
    file_put_contents($log,date('Y-m-d H:i:s')." [ time:{$calculate_time_span} ] url: {$url} \nmethod: {$method} \ndata: ".json_encode($param)." \nresult: {$info} \nerrorno: {$_errno} error: {$_error} \n",FILE_APPEND);
    if( $_error ){
      return self::_err( $_error );
    }
    return $info;
  }
  public static function setHeader($header){
     self::$headers = $header;
  }
  public static function setCookie( $cookie ){
    self::$cookie = $cookie;
  }
}

關于如何在PHP中封裝一個請求類就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享文章:如何在PHP中封裝一個請求類-創(chuàng)新互聯
URL鏈接:http://jinyejixie.com/article48/ccjeep.html

成都網站建設公司_創(chuàng)新互聯,為您提供面包屑導航、網站維護、定制開發(fā)、關鍵詞優(yōu)化、網站改版、手機網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都定制網站網頁設計
桃园县| 叶城县| 义马市| 卢龙县| 彭州市| 蓝田县| 泽普县| 荃湾区| 景东| 鄯善县| 南平市| 康平县| 旅游| 六盘水市| 紫金县| 张北县| 楚雄市| 宜春市| 伊宁县| 高青县| 加查县| 文成县| 富源县| 芷江| 马鞍山市| 沙田区| 吕梁市| 诏安县| 临武县| 独山县| 永平县| 托克逊县| 长丰县| 锡林浩特市| 彭州市| 沈丘县| 滨州市| 砀山县| 徐水县| 遂宁市| 虎林市|