Документация для разработчиков
Темная тема

CSOAPServerResponser

Методы интерфейса

Метод ОписаниеС версии
void
OnBeforeRequest(
 CSOAPServer &cserver
)
Метод вызывается для всех обработчиков CSOAPServerResponser зарегистрированных в обрабатывающем SOAP сервере при наступлении события, когда получен запрос к серверу, но ещё не началось его раскодирование. 6.5.2
void
OnAfterResponse(
 CSOAPServer &cserver
)
Метод вызывается для всех обработчиков CSOAPServerResponser зарегистрированных в обрабатывающем SOAP сервере при наступлении события, когда завершилась обработка запроса и ответ уже отослан (ProcessRequestBody вернула true). 6.5.2
boolean
ProcessRequestBody(
 CSOAPServer &cserver,
 CDataXMLNode body
)
Метод обработчик запроса SOAP сервера. Если метод обработал запрос и ответил вызовом ShowResponse, то возвращается true. Иначе возвращается false и вызовы ProcessRequestBody обработчиков продолжаются по цепочке пока не будет найден обработчик запроса, либо пока список обработчиков не иссякнет. 6.5.2

Параметры метода

Параметр Описание
cserver Ссылка на объект CSOAPServer, обрабатывающего soap запрос.
body Часть XML запроса от элемента, следующего за тегом body в виде CDataXMLNode.

Пример использования


class CMSSOAPResearch extends CSOAPServerResponser
{
	var $provider_id;    
	var $service_id;
	var $add_tittle;
	var $query_path;
	var $registration_path;

	function OnBeforeRequest(&$cserver) 
	{
		AddMessage2Log(mydump($cserver->GetRequestData()));    
	}

	function ProcessRequestBody(&$cserver, $body) 
	{
		$functionName = $body->name();
		$namespaceURI = $body->namespaceURI();
		$requestNode = $body;
        
		if ($functionName == "Registration")
		{
			$root = new CXMLCreator("RegistrationResponse");
			$root->setAttribute("xmlns", "urn:Microsoft.Search");
            
			$regres = new CXMLCreator("RegistrationResult");
			$root->addChild($regres);
                        
			$prup = new CXMLCreator("ProviderUpdate");
			$prup->setAttribute("xmlns", "urn:Microsoft.Search.Registration.Response");
			$prup->setAttribute("revision", "1");             
			$prup->setAttribute("build", "1");
			$regres->addChild($prup);    
            
			$stat = new CXMLCreator("Status");
			$stat->setData("SUCCESS");
			$prup->addChild($stat);
                        
			$providers = array(
                
				"Provider" => array (
					"Message" => "Тестовая служба.",
					"Id" => "{$this->provider_id}",
					"Name" => "Тестовая служба. {$this->add_tittle}",
					"QueryPath" => $this->query_path,
					"RegistrationPath" => $this->registration_path,
					"AboutPath" => "http://www.bitrix.ru/",
					"Type" => "SOAP",
					"Revision" => "1",
					"Services" => array(
						"Service" => array(
							"Id" => "{$this->service_id}",
							"Name" => "Тестовая служба. {$this->add_tittle}",
							"Description" => "Тестовая служба для тестирования soap сервера.",
							"Copyright" => "(c) Bitrix.",
							"Display" => "On",
							"Category" => "ECOMMERCE_GENERAL",
							"Parental" => "Unsupported",
						)
					)                        
				)                        
            
			);

			$providersEncoded = CXMLCreator::encodeValueLight("Providers", $providers);
			$prup->addChild($providersEncoded);        
            
			$cserver->ShowRawResponse($root, true);
            
			AddMessage2Log($cserver->GetResponseData());
            
			return true;
		}
        
		return false;
	}
}


© «Битрикс», 2001-2024, «1С-Битрикс», 2024