摘要:原理很簡(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
摘要:是開源的類庫(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)求參...
摘要:我看可以發(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)然客戶端也要用小米...
摘要:簡(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:...
摘要:的毫秒級(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) 為了保...
摘要:函數(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)求,然后得到返回...
閱讀 605·2021-11-22 12:05
閱讀 1693·2021-11-17 09:33
閱讀 3811·2021-11-11 16:54
閱讀 2929·2021-10-14 09:49
閱讀 4361·2021-09-06 15:01
閱讀 1961·2019-08-29 17:23
閱讀 834·2019-08-29 14:09
閱讀 858·2019-08-29 12:28