亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

php用curl封裝一個(gè)http請(qǐng)求類(鏈?zhǔn)秸{(diào)用)

李文鵬 / 1635人閱讀

摘要:原理很簡(jiǎn)單就是使用庫(kù)模擬工具類設(shè)置設(shè)置超時(shí)不能小于等于只需要設(shè)置一個(gè)秒的數(shù)量就可以設(shè)置代理設(shè)置代理端口設(shè)置來源頁(yè)面設(shè)置用戶代理模擬用戶使用的瀏覽器響應(yīng)中是否顯示,表示顯示設(shè)置請(qǐng)求的參數(shù)或設(shè)置證書路徑模擬請(qǐng)求設(shè)置參數(shù)

原理很簡(jiǎn)單,就是使用curl庫(kù)

ch = curl_init();
    }

    /**
     * 設(shè)置http header
     * @param $header
     * @return $this
     */
    public function setHeader($header) {
        if(is_array($header)){
            curl_setopt($this->ch, CURLOPT_HTTPHEADER  , $header);
        }
        return $this;
    }

    /**
     * 設(shè)置http 超時(shí)
     * @param int $time
     * @return $this
     */
    public function setTimeout($time) {
        // 不能小于等于0
        if($time <= 0) {
            $time = 5;
        }
        //只需要設(shè)置一個(gè)秒的數(shù)量就可以
        curl_setopt($this->ch, CURLOPT_TIMEOUT, $time);
        return $this;
    }


    /**
     * 設(shè)置http 代理
     * @param string $proxy
     * @return $this
     */
    public function setProxy($proxy) {
        if($proxy){
            curl_setopt ($this->ch, CURLOPT_PROXY, $proxy);
        }
        return $this;
    }

    /**
     * 設(shè)置http 代理端口
     * @param int $port
     * @return $this
     */
    public function setProxyPort($port) {
        if(is_int($port)) {
            curl_setopt($this->ch, CURLOPT_PROXYPORT, $port);
        }
        return $this;
    }

    /**
     * 設(shè)置來源頁(yè)面
     * @param string $referer
     * @return $this
     */
    public function setReferer($referer = ""){
        if (!empty($referer))
            curl_setopt($this->ch, CURLOPT_REFERER , $referer);
        return $this;
    }

    /**
     * 設(shè)置用戶代理
     * @param string $agent
     * @return $this
     */
    public function setUserAgent($agent = "") {
        if ($agent) {
            // 模擬用戶使用的瀏覽器
            curl_setopt($this->ch, CURLOPT_USERAGENT, $agent);
        }
        return $this;
    }

    /**
     * http響應(yīng)中是否顯示header,1表示顯示
     * @param $show
     * @return $this
     */
    public function showResponseHeader($show) {
        curl_setopt($this->ch, CURLOPT_HEADER, $show);
        return $this;
    }


    /**
     * 設(shè)置http請(qǐng)求的參數(shù),get或post
     * @param array $params
     * @return $this
     */
    public function setParams($params) {
        $this->httpParams = $params;
        return $this;
    }

    /**
     * 設(shè)置證書路徑
     * @param $file
     */
    public function setCainfo($file) {
        curl_setopt($this->ch, CURLOPT_CAINFO, $file);
    }


    /**
     * 模擬GET請(qǐng)求
     * @param string $url
     * @param string $dataType
     * @return bool|mixed
     */
    public function get($url, $dataType = "text") {
        if(stripos($url, "https://") !== FALSE) {
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($this->ch, CURLOPT_SSLVERSION, 1);
        }
        // 設(shè)置get參數(shù)
        if(!empty($this->httpParams) && is_array($this->httpParams)) {
            if(strpos($url, "?") !== false) {
                $url .= http_build_query($this->httpParams);
            } else {
                $url .= "?" . http_build_query($this->httpParams);
            }
        }
        // end 設(shè)置get參數(shù)
        curl_setopt($this->ch, CURLOPT_URL, $url);
        curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1 );
        $content = curl_exec($this->ch);
        $status = curl_getinfo($this->ch);
        curl_close($this->ch);
        if (isset($status["http_code"]) && $status["http_code"] == 200) {
            if ($dataType == "json") {
                $content = json_decode($content, true);
            }
            return $content;
        } else {
            return FALSE;
        }
    }




    /**
     * 模擬POST請(qǐng)求
     *
     * @param string $url
     * @param array $fields
     * @param string $dataType
     * @return mixed
     * 
     * HttpCurl::post("http://api.example.com/?a=123", array("abc"=>"123", "efg"=>"567"), "json");
     * HttpCurl::post("http://api.example.com/", "這是post原始內(nèi)容", "json");
     * 文件post上傳
     * HttpCurl::post("http://api.example.com/", array("abc"=>"123", "file1"=>"@/data/1.jpg"), "json");
     */
    public function post($url, $dataType="text") {
        if(stripos($url, "https://") !== FALSE) {
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($this->ch, CURLOPT_SSLVERSION, 1);
        }
        curl_setopt($this->ch, CURLOPT_URL, $url);
        // 設(shè)置post body
        if(!empty($this->httpParams)) {
            if(is_array($this->httpParams)) {
                curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($this->httpParams));
            } else if(is_string($this->httpParams)) {
                curl_setopt($this->ch, CURLOPT_POSTFIELDS, $this->httpParams);
            }
        }
        // end 設(shè)置post body
        curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt($this->ch, CURLOPT_POST, true);
        $content = curl_exec($this->ch);
        $status = curl_getinfo($this->ch);
        curl_close($this->ch);
        if (isset($status["http_code"]) && $status["http_code"] == 200) {
            if ($dataType == "json") {
                $content = json_decode($content, true);
            }
            return $content;
        } else {
            return FALSE;
        }
    }
}
使用舉例

echo (new HttpCurl())->setParams(["name" => "dfh", "age" => 12])->get("http://www.test.com");

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/23185.html

相關(guān)文章

  • YurunHttp v3.1.0,新增 Cookie 管理機(jī)制,單元測(cè)試支持

    摘要:是開源的類庫(kù),支持鏈?zhǔn)讲僮?,?jiǎn)單易用。支持所有常見的等請(qǐng)求方式,支持上傳下載設(shè)置和讀取請(qǐng)求參數(shù)失敗重試限速代理證書等。版完美支持協(xié)程。現(xiàn)在同一個(gè)類實(shí)例,會(huì)自動(dòng)管理。 YurunHttp 是開源的 PHP HTTP 類庫(kù),支持鏈?zhǔn)讲僮?,?jiǎn)單易用。 支持所有常見的 GET、POST、PUT、DELETE、UPDATE 等請(qǐng)求方式,支持上傳下載、設(shè)置和讀取 header、Cookie、請(qǐng)求參...

    cnTomato 評(píng)論0 收藏0
  • 從小米推送 php 服務(wù)端框架中看看代碼該怎么寫

    摘要:我看可以發(fā)現(xiàn)小米推送目錄結(jié)構(gòu)是這樣的其中是底層的網(wǎng)絡(luò)庫(kù),主要是封裝了的和方法請(qǐng)求遠(yuǎn)程的服務(wù)器并利用提供的類來接收服務(wù)器返回的數(shù)據(jù),代碼十分優(yōu)雅,我們可以看看。 小米推送框架 近期因?yàn)橛行枰晕⒖戳艘幌滦∶淄扑偷?php 版本服務(wù)端框架,這個(gè)推送平臺(tái)免費(fèi)的,我們只需要告訴小米平臺(tái)我們要推什么設(shè)備,它會(huì)自己幫我們推,而且還會(huì)統(tǒng)計(jì)很多信息給我們分析,如抵達(dá)率和點(diǎn)擊率等等,當(dāng)然客戶端也要用小米...

    loonggg 評(píng)論0 收藏0
  • 全國(guó)車輛違章查詢數(shù)據(jù)使PHP

    摘要:簡(jiǎn)介聚合數(shù)據(jù)全國(guó)車輛違章數(shù)據(jù)接口,目前已經(jīng)支持個(gè)左右的城市違章查詢,已連接上萬個(gè)。方便有車一族隨時(shí)了解自己是否有過交通違章,避免因遺忘或逾期處理違章罰單而造成的不必要損失。 簡(jiǎn)介聚合數(shù)據(jù)全國(guó)車輛違章數(shù)據(jù)接口,目前已經(jīng)支持300個(gè)左右的城市違章查詢,已連接上萬個(gè)APP。方便有車一族隨時(shí)了解自己是否有過交通違章,避免因遺忘或逾期處理違章罰單而造成的不必要損失。 API參考文檔:https:...

    zhangqh 評(píng)論0 收藏0
  • PHP超時(shí)處理全面總結(jié)

    摘要:的毫秒級(jí)超時(shí)也有問題。。中超時(shí)實(shí)現(xiàn)一初級(jí)最簡(jiǎn)單的超時(shí)實(shí)現(xiàn)秒級(jí)超時(shí)思路很簡(jiǎn)單鏈接一個(gè)后端,然后設(shè)置為非阻塞模式,如果沒有連接上就一直循環(huán),判斷當(dāng)前時(shí)間和超時(shí)時(shí)間之間的差異。實(shí)際處理這個(gè)調(diào)用的部件在完成后,通過狀態(tài)通知和回調(diào)來通知調(diào)用者。 概述 在PHP開發(fā)中工作里非常多使用到超時(shí)處理到超時(shí)的場(chǎng)合,我說幾個(gè)場(chǎng)景: 異步獲取數(shù)據(jù)如果某個(gè)后端數(shù)據(jù)源獲取不成功則跳過,不影響整個(gè)頁(yè)面展現(xiàn) 為了保...

    I_Am 評(píng)論0 收藏0
  • PHP cURL 函數(shù)封裝

    摘要:函數(shù)代碼支持,煙火里的塵埃請(qǐng)求地址參數(shù)數(shù)據(jù)如果服務(wù)器返回則返回,不然則返回初始化設(shè)置傳輸選項(xiàng)方式獲取采集結(jié)果關(guān)閉鏈接解析判斷還是驗(yàn)證解析 概念描述 CURL是一個(gè)非常強(qiáng)大的開源庫(kù),支持很多協(xié)議,包括HTTP、FTP、TELNET等,可以使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求的方法。 應(yīng)用場(chǎng)景 在開發(fā)中服務(wù)端調(diào)用API 時(shí),經(jīng)常用到向第三方API發(fā)起GET 或 POST 請(qǐng)求,然后得到返回...

    darcrand 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<