public function sendRequest($uri, $method = 'GET', $data = null)
{
foreach ($this->requestHeaders as $key => $value) {
$this->setRequestHeaders[] = $key . ': ' . $value;
}
$method = strtoupper($method);
$urlSeparator = parse_url($uri, PHP_URL_QUERY) ? '&' : '?';
$uri = $method == 'GET' && !empty($data) ? $uri . $urlSeparator . (is_array($data) ? http_build_query($data) : $data) : $uri;
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, $uri);
curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, $this->curlSSLVerifypeer);
if ($this->responseOutputHeader) {
curl_setopt($c, CURLOPT_HEADER, true);
}
if ($method != 'GET') {
if (is_array($data)) {
$data = http_build_query($data);
}
if ($method == 'POST') {
curl_setopt($c, CURLOPT_POST, true);
}
if ($method == 'PUT' || $method == 'DELETE') {
$this->setRequestHeaders[] = 'Content-Length: ' . strlen($data);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, $method);
}
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($c, CURLOPT_HTTPHEADER, $this->setRequestHeaders);
curl_setopt($c, CURLINFO_HEADER_OUT, true);
$contents = curl_exec($c);
$this->responseStatus = curl_getinfo($c, CURLINFO_HTTP_CODE);
$this->headerSent = curl_getinfo($c, CURLINFO_HEADER_OUT);
curl_close($c);
if ($contents) {
return $contents;
}
return false;
}