mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 23:32:17 +02:00
Retrofit the useful DoPostRequest function which was used (and defined) in several extensions.
SVN:trunk[2886]
This commit is contained in:
@@ -875,6 +875,60 @@ class utils
|
|||||||
static public function GetSafeId($sId)
|
static public function GetSafeId($sId)
|
||||||
{
|
{
|
||||||
return str_replace(array(':', '[', ']', '+', '-'), '_', $sId);
|
return str_replace(array(':', '[', ']', '+', '-'), '_', $sId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to execute an HTTP POST request
|
||||||
|
* Source: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl
|
||||||
|
* originaly named after do_post_request
|
||||||
|
* Does not require cUrl but requires openssl for performing https POSTs.
|
||||||
|
*
|
||||||
|
* @param string $sUrl The URL to POST the data to
|
||||||
|
* @param hash $aData The data to POST as an array('param_name' => value)
|
||||||
|
* @param string $sOptionnalHeaders Additional HTTP headers as a string with newlines between headers
|
||||||
|
* @return string The result of the POST request
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
static public function DoPostRequest($sUrl, $aData, $sOptionnalHeaders = null)
|
||||||
|
{
|
||||||
|
// $sOptionnalHeaders is a string containing additional HTTP headers that you would like to send in your request.
|
||||||
|
|
||||||
|
$sData = http_build_query($aData);
|
||||||
|
|
||||||
|
$aParams = array('http' => array(
|
||||||
|
'method' => 'POST',
|
||||||
|
'content' => $sData,
|
||||||
|
'header'=> "Content-type: application/x-www-form-urlencoded\r\nContent-Length: ".strlen($sData)."\r\n",
|
||||||
|
));
|
||||||
|
if ($sOptionnalHeaders !== null)
|
||||||
|
{
|
||||||
|
$aParams['http']['header'] .= $sOptionnalHeaders;
|
||||||
|
}
|
||||||
|
$ctx = stream_context_create($aParams);
|
||||||
|
|
||||||
|
$fp = @fopen($sUrl, 'rb', false, $ctx);
|
||||||
|
if (!$fp)
|
||||||
|
{
|
||||||
|
global $php_errormsg;
|
||||||
|
if (isset($php_errormsg))
|
||||||
|
{
|
||||||
|
throw new Exception("Wrong URL: $sUrl, $php_errormsg");
|
||||||
|
}
|
||||||
|
elseif ((strtolower(substr($sUrl, 0, 5)) == 'https') && !extension_loaded('openssl'))
|
||||||
|
{
|
||||||
|
throw new Exception("Cannot connect to $sUrl: missing module 'openssl'");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception("Wrong URL: $sUrl");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$response = @stream_get_contents($fp);
|
||||||
|
if ($response === false)
|
||||||
|
{
|
||||||
|
throw new Exception("Problem reading data from $sUrl, $php_errormsg");
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
Reference in New Issue
Block a user