• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/classes/general/rest_util.php
  • Класс: CRestUtil
  • Вызов: CRestUtil::getRequestData
static function getRequestData()
{
	$request = BitrixMainContext::getCurrent()->getRequest();
	$server = BitrixMainContext::getCurrent()->getServer();

	$query = $request->toArray();

	if($request->isPost() && $request->getPostList()->isEmpty())
	{
		$rawPostData = trim($request->getInput());

		if(isset($server['HTTP_CONTENT_TYPE']))
		{
			$requestContentType = $server['HTTP_CONTENT_TYPE'];
		}
		else
		{
			$requestContentType = $server['CONTENT_TYPE'];
		}

		$requestContentType = trim(preg_replace('/;.*$/', '', $requestContentType));

		$postData = array();

		switch($requestContentType)
		{
			case 'application/json':

				try
				{
					$postData = BitrixMainWebJson::decode($rawPostData);
				}
				catch(BitrixMainArgumentException $e)
				{
					$postData = array();
				}

				break;

			default:

				if($rawPostData <> '')
				{
					parse_str($rawPostData, $postData);
				}

				break;
		}

		if (!is_array($postData))
		{
			$postData = [];
		}

		$query = array_replace($query, $postData);
	}

	// TODO: process errorMessage and output correct error message on encoding mismatch
	$query = BitrixMainTextEncoding::convertEncoding($query, 'UTF-8', LANG_CHARSET);

	return $query;
}