PHP Request請求封裝

2022-02-16 00:56:26 字數 4831 閱讀 8722

/*

* * request請求封裝

* class request

* @package tool */

class

request

if(!filter_var($url,filter_validate_url))

unset($parts

);

//請求引數格式轉換成陣列

// if('json' !== strtolower($method))

// 頭部格式轉換

$header = self::format_header($header

);

//引數格數轉換與請求頭設定

switch (strtolower($method

))

break

;

case 'post':

$options[curlopt_post] = true; //

post提交方式

break

;

case 'json':

$options[curlopt_post] = true; //

post提交方式

if(!empty($params) && is_array($params)) $params = json_encode($params

);

if(!is_array($header)) $header =;

$check = false

;

if(!empty($header

)) }

}if(!$check

)

}break

;

case 'form':

$options[curlopt_post] = true; //

post提交方式

// 偽造**referer

post提交方式

}

$ch = curl_init(); //

初始化curl

抓取指定網頁

$setopt[curlopt_post] = true; //

是否post提交方式

模擬瀏覽器**

$setopt[curlopt_returntransfer] = true; //

設定獲取的資訊以檔案流的形式返回,而不是直接輸出

$setopt[curlopt_nobody] = false; //

不顯示body

$setopt[curlopt_header] = false; //

設定標頭檔案的資訊作為資料流輸出

// $header = 'client-ip: 8.8.8.8';

// $header = 'x-forwarded-for: 8.8.8.8'; // 偽造ip**

if(!empty($header

))//

$setopt[curlopt_referer] = 60; //偽造**referer

// $setopt[curlopt_connecttimeout] = 60; //超時設定

// $setopt[curlopt_followlocation] = true; //根據伺服器返回 http 頭中的'location:'重定向

// $setopt[curlopt_maxredirs] = 3; //最大重定向次數

// $setopt[curlopt_httpproxytunnel] = true; //是否通過http**來傳輸

// $setopt[curlopt_proxy] = 'ip:埠號'; //是否通過http**來傳輸

// $setopt[curlopt_proxyuserpwd] = 'user:password'; //如果要密碼的話,加上這個

// cookie設定

// $setopt[curlopt_cookie] = ''; //cookie

// $setopt[curlopt_noprogress] = false; //是否關閉傳輸進度,預設是true

// $setopt[curlopt_progressfunction] = 'callback'; //**函式,curl傳輸過程中,會每隔一段時間自動呼叫該函式

if(!empty($params

))

if (function_exists('curl_file_create'))else

}if(!empty($options) && is_array($options)) $setopt = $options + $setopt

; curl_setopt_array(

$ch, $setopt

);

unset($url, $params, $header, $method, $setopt

);

$response = curl_exec($ch); //

執行curl

$errno = curl_errno($ch); //

返回最後一次的錯誤號

狀態碼 curl_close($ch

/*** get提交

* @param $url

* @param array $params

* @param array $header

* @param int $timeout

* @return mixed

*/public

static

function get($url, $params=, $header=, $timeout=60)

/*** post提交

* @param $url

* @param array $params

* @param array $header

* @param int $timeout

* @return mixed

*/public

static

function post($url, $params=, $header=, $timeout=60)

/*** json提交

* @param $url

* @param array $params

* @param array $header

* @param int $timeout

* @return mixed

*/public

static

function json($url, $params=, $header=, $timeout=60)

/*** form表單提交

* @param $url

* @param array $params

* @param array $header

* @param int $timeout

* @return array|mixed

*/public

static

function form($url, $params=, $header=, $timeout=60)

/*** 組裝form表單跳轉

* @param $url

* @param $params

* @param string $method

*/public

static

function createform($url, $params, $method='post')

慎用PHP REQUEST陣列

不過,從今以後我會盡量不再使用 request這個陣列,因為以前對這個陣列有些一知半解,總以為用起來簡單,並且隨心所欲,和 get與 post一樣,而且由系統為我判斷,多好。下面我就來簡單的介紹一下為何不應該使用 request這個陣列。我們都知道,處理表單資料,可以使用php的 get和 post...

curl封裝請求

一 linux curl用法舉例 1.linux curl抓取網頁 如發現亂碼,可以使用iconv轉碼 fgb2312 iconv的用法請參閱 在linux unix系統下用iconv命令處理文字檔案中文亂碼問題 2.linux curl使用 linux curl使用http 抓取頁面 使用sock...

vue axios 請求封裝

import axios from axios import router from router index import from element ui import from utils loading import from utils auth import qs from qs 引入qs...