private function execCurl($url, $method = 'GET', $content = null, $headers = null, $followLoc = true)
{
$res = new CurlResponse();
if (isset($method)) {
curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, $method);
}
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_TIMEOUT, $this->timeout);
if (!empty($headers)) {
curl_setopt($this->ch, CURLOPT_HTTPHEADER, $headers);
}
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, $followLoc ? 1 : 0);
//支持跳转
//curl_setopt($this->ch, CURLOPT_HEADERFUNCTION, array($res,'handleHeader')); // handle received headers
curl_setopt($this->ch, CURLOPT_HEADER, true);
if (!empty($content)) {
$content_type = '';
// 取content-type
foreach ($headers as $h) {
list($n, $v) = explode(':', $h) + array(null, null);
if (strcasecmp(trim($n), 'Content-Type') === 0) {
$content_type = trim($v);
break;
}
}
if (is_array($content) && $content_type == 'application/json') {
curl_setopt($this->ch, CURLOPT_POSTFIELDS, json_encode($content));
} else {
if ($content_type == 'multipart/form-data') {
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $content);
} else {
if (is_array($content)) {
curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($content));
} else {
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $content);
}
}
}
}
$response = curl_exec($this->ch);
$res->http_code = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
$res->errno = curl_errno($this->ch);
$res->errstr = curl_error($this->ch);
$res->parseReturnData($response);
return $res;
}