[php]
function request($url,$params=array(),$requestMethod='GET',$jsonDecode=true,$headers=array()) {
$ci = curl_init();
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ci, CURLOPT_USERAGENT, '1001 Magazine v1');
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ci, CURLOPT_TIMEOUT, 10);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ci, CURLOPT_ENCODING, "");
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ci, CURLOPT_HEADER, FALSE);
switch ($requestMethod) {
case 'POST':
curl_setopt($ci, CURLOPT_POST, TRUE);
if ($params) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
}
else {
curl_setopt($ci, CURLOPT_POSTFIELDS, ''); // Don't know why: if not set, 413 Request Entity Too Large
}
break;
case 'DELETE':
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
if ($params) {
$url = "{$url}?{$params}";
}
break;
case 'GET':
if($params) {
if(false === strpos($url,'?')) {
$url.= '?'.http_build_query($params);
}
else {
$url.=http_build_query($params);
}
}
break;
case 'PUT':
if($params) {
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
}
break;
}
//$headers[] = "APIWWW: " . $_SERVER['REMOTE_ADDR'];
curl_setopt($ci, CURLOPT_URL, $url );
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
$response = curl_exec($ci);
$httpCode = curl_getinfo($ci, CURLINFO_HTTP_CODE);
$return = array(
'httpcode' => $httpCode,
'data' => $jsonDecode?json_decode($response,true):$response
);
//$httpInfo = curl_getinfo($ci);
curl_close ($ci);
return $return;
}
[/php]