/**
* 使用cURL发送POST请求
* @param string $url 请求地址
* @param array $post POST数据数组
* @param array $options HTTP选项数组
* @param string $error 用于返回错误信息
* @param int $errno 用于返回错误码
* @param string $httpCode 用于返回响应的HTTP状态码
* @param array $outHeaders 用于获得返回的HTTP头
* @return mixed 成功返回请求返回结果,失败返回flase
*/
function curl_post($url, $post = [], $options = [], &$error = false, &$errno = false, &$httpCode = false, $isupload = false, &$outHeaders = false)
{
$heads = array();
$defaults = [
CURLOPT_POST => 1,
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
CURLOPT_POSTFIELDS => ($isupload || is_string($post)) ? $post : http_build_query($post),
];
if ($isupload) {
$defaults[CURLOPT_SAFE_UPLOAD] = true;
}
if (is_array($outHeaders)) {
$defaults[CURLOPT_HEADERFUNCTION] = function ($c, $v) use(&$outHeaders) {
if(!empty(rtrim($v))) {
list($field, $value) = explode(':', $v, 2);
if ($field && $value) {
$outHeaders[strtolower($field)] = trim($value);
}
}
return strlen($v);
};
}
$ch = curl_init();
$result = '';
if ($ch) {
foreach ($options as $k=>$v) {
$defaults[$k] = $v;
}
curl_setopt_array($ch, $defaults);
$result = curl_exec($ch);
if ($result === false) {
if ($error !== false) {
$error = curl_error($ch);
}
if ($errno !== false) {
$errno = curl_errno($ch);
}
}
if ($httpCode !== false) {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
}
curl_close($ch);
}
return $result;
}
/**
* 使用cURL发送GET请求
* @param string $url 请求地址
* @param array $post GET数据数组
* @param array $options HTTP选项数组
* @param string $error 用于返回错误信息
* @param int $errno 用于返回错误码
* @param string $httpCode 用于返回响应的HTTP状态码
* @param array $outHeaders 用于获得返回的HTTP头
* @return mixed 成功返回请求返回结果,失败返回flase
*/
function curl_get($url, $get = [], $options = [], &$error = false, &$errno = false, &$httpCode = false, &$outHeaders = false)
{
$defaults = [
CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : '&'). http_build_query($get),
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
];
if (is_array($outHeaders)) {
$defaults[CURLOPT_HEADERFUNCTION] = function ($c, $v) use(&$outHeaders) {
if (!empty(rtrim($v))) {
list($field, $value) = explode(':', $v, 2);
if ($field && $value) {
$outHeaders[strtolower($field)] = trim($value);
}
}
return strlen($v);
};
}
$ch = curl_init();
$result = '';
if ($ch) {
foreach ($options as $k=>$v) {
$defaults[$k] = $v;
}
curl_setopt_array($ch, $defaults);
$result = curl_exec($ch);
if ($result === false) {
if ($error !== false) {
$error = curl_error($ch);
}
if ($errno !== false) {
$errno = curl_errno($ch);
}
}
if ($httpCode !== false) {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
}
curl_close($ch);
}
return $result;
}