• Модуль: transformer
  • Путь к файлу: ~/bitrix/modules/transformer/lib/http.php
  • Класс: BitrixTransformerHttp
  • Вызов: Http::query
public function query($command, $guid, $params = array())
{
	if($command == '')
	{
		throw new ArgumentNullException('command');
	}
	if(!is_array($params))
	{
		throw new ArgumentTypeException('params', 'array');
	}

	if(!$this->shouldWeSend())
	{
		return [
			'success' => false,
			'result' => [
				'code' => Command::ERROR_CONNECTION_COUNT
			]
		];
	}

	if($params['file'])
	{
		$uri = new BitrixMainWebUri($params['file']);
		if($uri->getHost() == '')
		{
			$params['file'] = (new Uri($this->domain.$params['file']))->getLocator();
		}
	}

	$params['back_url'] = $this->getBackUrl($guid);

	$post = array('command' => $command, 'params' => $params);

	if($params['queue'])
	{
		$post['QUEUE'] = $params['queue'];
	}
	$post['BX_LICENCE'] = $this->licenceCode;
	$post['BX_DOMAIN'] = $this->domain;
	$post['BX_TYPE'] = $this->type;
	$post['BX_VERSION'] = self::VERSION;
	$post = BitrixMainTextEncoding::convertEncoding($post, SITE_CHARSET, 'UTF-8');
	$post['BX_HASH'] = self::requestSign($this->type, md5(implode('|', $post)));

	Log::write('COMMAND: '.print_r($post, 1));

	$httpClient = new BitrixMainWebHttpClient(array(
		'socketTimeout' => Option::get(self::MODULE_ID, 'connection_time', 8),
		'streamTimeout' => Option::get(self::MODULE_ID, 'stream_time', 8),
		'waitResponse' => true,
	));
	$httpClient->setHeader('User-Agent', 'Bitrix Transformer Client');
	$httpClient->setHeader('Referer', $this->domain);
	$response = $httpClient->post($this->controllerUrl, $post);

	Log::write('RESPONSE: '.$response);

	if($response === false)
	{
		return [
			'success' => false,
			'result' => [
				'code' => Command::ERROR_CONNECTION
			]
		];
	}
	try
	{
		return Json::decode($response);
	}
	catch(ArgumentException $e)
	{
		return [
			'success' => false,
			'result' => [
				'code' => Command::ERROR_CONNECTION_RESPONSE,
			]
		];
	}
}