curlfile扩展 php_PHP封装CURL扩展

* @description: 封装CURL扩展

* @date: 2014-07-28 16:04*/

/**

* @编码规范

* @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage

* @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result

* @function 函数名与类名规则相同 eg: function SendRequest

* @params 函数形参规则与变量名相同

* @class-variable 成员变量,以下划线结尾,多个单词使用下划线分隔. eg: private $host_name_*/

/**

* @要求

**/

classCurl{/**

* @请求的host*/

private $host_;/**

* @curl 句柄*/

private $ch_;/**

* @超时限制时间*/

const time_=5;/**

* @请求的设置*/

private $options_;/**

* @保存请求头信息*/

private $request_header_;/**

* @保存响应头信息*/

private $response_header_;/**

* @body_ 用于保存curl请求返回的结果*/

private $body_;/**

* @读取cookie*/

private $cookie_file_;/**

* @写入cookie*/

private $cookie_jar_;/**

* @todo proxy

* @构造函数,初始化CURL回话*/

public function Start($url){$this->ch_ = curl_init($url);

curl_setopt($this->ch_, CURLOPT_HEADER, 1);

curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 1);

}/**

* @返回响应头*/

public function ResponseHeader($url){if (!function_exists('http_parse_headers')) {function http_parse_headers ($raw_headers){$headers = array();foreach (explode("\n", $raw_headers) as $i => $h) {$h = explode(':', $h, 2);if (isset($h[1])) {if(!isset($headers[$h[0]])) {$headers[$h[0]] = trim($h[1]);

}else if(is_array($headers[$h[0]])) {$tmp = array_merge($headers[$h[0]],array(trim($h[1])));$headers[$h[0]] = $tmp;

}else{$tmp = array_merge(array($headers[$h[0]]),array(trim($h[1])));$headers[$h[0]] = $tmp;

}

}

}return $headers;

}

}$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);$this->body_=$this->Execx();$header_size = curl_getinfo($this->ch_,CURLINFO_HEADER_SIZE);$this->response_header_ = substr($this->body_, $start = 0, $offset = $header_size);$this->response_header_ = http_parse_headers($this->response_header_);print_r($this->response_header_);return $this->Close($this->body_);

}/**

* @读取cookie*/

public function LoadCookie($url,$cookie_file){$this->Start($url);

curl_setopt($this->ch_, CURLOPT_COOKIE, 1);

curl_setopt($this->ch_, CURLOPT_COOKIEFILE , $cookie_file);$this->body_=$this->Execx();return $this->Close($this->body_);

}/**

* @写入cookie*/

public function SaveCookie($url){$this->Start($url);

curl_setopt($this->ch_, CURLOPT_COOKIE, 1);

curl_setopt($this->ch_, CURLOPT_COOKIEFILE ,'cookie.txt');

curl_setopt($this->ch_, CURLOPT_COOKIEJAR , 'cookie.txt');$this->body_=$this->Execx();return $this->Close($this->body_);

}/**

* @设置HEADER*/

public function SetHeader($headers = null){if (is_array($headers) && count($headers) > 0) {

curl_setopt($this->ch_, CURLOPT_HTTPHEADER, $headers);

}

}/**

* @GET请求*/

public function Get($url, array $params = array()) {if ($params) {if (strpos($url, '?')) {$url .= "&".http_build_query($params);

}else{$url .= "?".http_build_query($params);

}

}$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);if (strpos($url, 'https') === 0) {

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);

}$this->body_=$this->Execx();return $this->Close($this->body_);

}/**

* @POST请求*/

public function Post($url, array $params = array()) {$this->Start($url);

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($this->ch_, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));

curl_setopt($this->ch_, CURLOPT_POST, true);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);if ($params) {

curl_setopt($this->ch_, CURLOPT_POSTFIELDS, http_build_query($params));

}$this->body_=$this->Execx();return $this->Close($this->body_);

}/**

* @tips: google http head 方法*/

public function Head($url, array $params = array()) {$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);

curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 0);

curl_setOpt($this->ch_,CURLOPT_NOBODY, true);$this->body_=$this->Execx();return $this->Close($this->body_);

}/**

* @执行CURL会话*/

public functionExecx(){return curl_exec($this->ch_);

}/**

* @关闭CURL句柄*/

public function Close($body_){if ($body_ === false) {echo "CURL Error: " . curl_error($body_);return false;

}

curl_close($this->ch_);return $body_;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值