摘要:原理很簡單就是使用庫模擬工具類設置設置超時不能小于等于只需要設置一個秒的數量就可以設置代理設置代理端口設置來源頁面設置用戶代理模擬用戶使用的瀏覽器響應中是否顯示,表示顯示設置請求的參數或設置證書路徑模擬請求設置參數
原理很簡單,就是使用curl庫
ch = curl_init(); } /** * 設置http header * @param $header * @return $this */ public function setHeader($header) { if(is_array($header)){ curl_setopt($this->ch, CURLOPT_HTTPHEADER , $header); } return $this; } /** * 設置http 超時 * @param int $time * @return $this */ public function setTimeout($time) { // 不能小于等于0 if($time <= 0) { $time = 5; } //只需要設置一個秒的數量就可以 curl_setopt($this->ch, CURLOPT_TIMEOUT, $time); return $this; } /** * 設置http 代理 * @param string $proxy * @return $this */ public function setProxy($proxy) { if($proxy){ curl_setopt ($this->ch, CURLOPT_PROXY, $proxy); } return $this; } /** * 設置http 代理端口 * @param int $port * @return $this */ public function setProxyPort($port) { if(is_int($port)) { curl_setopt($this->ch, CURLOPT_PROXYPORT, $port); } return $this; } /** * 設置來源頁面 * @param string $referer * @return $this */ public function setReferer($referer = ""){ if (!empty($referer)) curl_setopt($this->ch, CURLOPT_REFERER , $referer); return $this; } /** * 設置用戶代理 * @param string $agent * @return $this */ public function setUserAgent($agent = "") { if ($agent) { // 模擬用戶使用的瀏覽器 curl_setopt($this->ch, CURLOPT_USERAGENT, $agent); } return $this; } /** * http響應中是否顯示header,1表示顯示 * @param $show * @return $this */ public function showResponseHeader($show) { curl_setopt($this->ch, CURLOPT_HEADER, $show); return $this; } /** * 設置http請求的參數,get或post * @param array $params * @return $this */ public function setParams($params) { $this->httpParams = $params; return $this; } /** * 設置證書路徑 * @param $file */ public function setCainfo($file) { curl_setopt($this->ch, CURLOPT_CAINFO, $file); } /** * 模擬GET請求 * @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); } // 設置get參數 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 設置get參數 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請求 * * @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原始內容", "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); // 設置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 設置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");
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23185.html
摘要:是開源的類庫,支持鏈式操作,簡單易用。支持所有常見的等請求方式,支持上傳下載設置和讀取請求參數失敗重試限速代理證書等。版完美支持協程。現在同一個類實例,會自動管理。 YurunHttp 是開源的 PHP HTTP 類庫,支持鏈式操作,簡單易用。 支持所有常見的 GET、POST、PUT、DELETE、UPDATE 等請求方式,支持上傳下載、設置和讀取 header、Cookie、請求參...
摘要:我看可以發現小米推送目錄結構是這樣的其中是底層的網絡庫,主要是封裝了的和方法請求遠程的服務器并利用提供的類來接收服務器返回的數據,代碼十分優雅,我們可以看看。 小米推送框架 近期因為有需要稍微看了一下小米推送的 php 版本服務端框架,這個推送平臺免費的,我們只需要告訴小米平臺我們要推什么設備,它會自己幫我們推,而且還會統計很多信息給我們分析,如抵達率和點擊率等等,當然客戶端也要用小米...
摘要:簡介聚合數據全國車輛違章數據接口,目前已經支持個左右的城市違章查詢,已連接上萬個。方便有車一族隨時了解自己是否有過交通違章,避免因遺忘或逾期處理違章罰單而造成的不必要損失。 簡介聚合數據全國車輛違章數據接口,目前已經支持300個左右的城市違章查詢,已連接上萬個APP。方便有車一族隨時了解自己是否有過交通違章,避免因遺忘或逾期處理違章罰單而造成的不必要損失。 API參考文檔:https:...
摘要:的毫秒級超時也有問題。。中超時實現一初級最簡單的超時實現秒級超時思路很簡單鏈接一個后端,然后設置為非阻塞模式,如果沒有連接上就一直循環,判斷當前時間和超時時間之間的差異。實際處理這個調用的部件在完成后,通過狀態通知和回調來通知調用者。 概述 在PHP開發中工作里非常多使用到超時處理到超時的場合,我說幾個場景: 異步獲取數據如果某個后端數據源獲取不成功則跳過,不影響整個頁面展現 為了保...
摘要:函數代碼支持,煙火里的塵埃請求地址參數數據如果服務器返回則返回,不然則返回初始化設置傳輸選項方式獲取采集結果關閉鏈接解析判斷還是驗證解析 概念描述 CURL是一個非常強大的開源庫,支持很多協議,包括HTTP、FTP、TELNET等,可以使用cURL實現Get和Post請求的方法。 應用場景 在開發中服務端調用API 時,經常用到向第三方API發起GET 或 POST 請求,然后得到返回...
閱讀 472·2021-11-22 12:05
閱讀 1533·2021-11-17 09:33
閱讀 3579·2021-11-11 16:54
閱讀 2659·2021-10-14 09:49
閱讀 4024·2021-09-06 15:01
閱讀 1821·2019-08-29 17:23
閱讀 693·2019-08-29 14:09
閱讀 712·2019-08-29 12:28