Curl.php ch = curl_init(); curl_setopt($this-ch, CURLOPT_HEADER, 1); //是否输出头信息,0为不输出,非零则输出 curl_setopt($this-ch, CURLOPT_RETURNTRANSFER, 1); //0为自动输出, 1为不自动输出. curl_setopt($this-ch,
ch = curl_init();
curl_setopt($this->ch, CURLOPT_HEADER, 1); //是否输出头信息,0为不输出,非零则输出
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); //0为自动输出, 1为不自动输出.
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 5); // 设置超时
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($this->ch, CURLOPT_ENCODING, "gzip");
}
/**
* Post 请求
* @param string $url
* @param array $data
* @return string
*/
public function post($url, $data)
{
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
return $this->exec();
}
/**
* Get 请求
* @param string $url
* @return string
*/
public function get($url)
{
if ($this->follow){
$this->setCookie($this->cookie);
}
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 0);
return $this->exec();
}
/**
* 设置Cookie
* @param string|array $cookie
* @return this
*/
public function setCookie($cookie)
{
if (is_array($cookie)){
$cookie = implode(';', $cookie);
}
curl_setopt($this->ch, CURLOPT_COOKIE, $cookie); // 设置 Cookies
return $this;
}
/**
* 设置请求头
* @param string|array $header
* @return this
*/
public function setHeader($header)
{
if (isset($header['User-Agent'])){
curl_setopt($this->ch, CURLOPT_USERAGENT, $header['User-Agent']);
}
curl_setopt($this->ch, CURLOPT_HTTPHEADER, $header); // 设置附加协议头
return $this;
}
/**
* 获取响应信息
*
* @return array
*/
public function getInfo()
{
return curl_getinfo($this->ch);
}
/**
* 发起请求
*
* @return string
*/
protected function exec()
{
$response = curl_exec($this->ch); //执行
if (empty($response)) { //获取错误,
$this->error = curl_error($this->ch);
return false;
}
// Header
$header = strpos($response, "\r\n\r\n");
$this->header = substr($response, 0, $header); //截取头信息
if ($this->header == "HTTP/1.1 100 Continue"){
$response = substr($response, $header + 4);
$header = strpos($response, "\r\n\r\n");
$this->header = substr($response ,0 ,$header); //截取头信息
}
// Cookies
if (preg_match_all("#set-cookie: (.*?)(?=;|\r)#i", $this->header, $cookie)){
foreach ($cookie[1] as $value){
$tmp = explode('=', $value);
$this->cookie[trim($tmp[0])] = $value;
}
}
return substr($response, $header + 4);
}
}
