Bitrix Site Manager

CSOAPServerResponser

Methods

Method Description
void
OnBeforeRequest(
 CSOAPServer &cserver
)
Called on all CSOAPServerResponser based handers registered in a SOAP server when an event fires: after a request has been received but before it is decoded.
void
OnAfterResponse(
 CSOAPServer &cserver
)
Called on all CSOAPServerResponser based handers when an event fires: after a request has been processed and a response has been sent(ProcessRequestBody returned true).
boolean
ProcessRequestBody(
 CSOAPServer &cserver,
 CDataXMLNode body
)
Processes a SOAP server request. If the method has processed a request and called ShowResponse, it returns true. Otherwise, it returns false and the system calls methods ProcessRequestBody of other handlers until the current callee returns true or there is no more handlers to call.

Parameters of methods

Parameter Description
cserver Reference to an instance of CSOAPServer that handles a SOAP request.
body A piece of an XML query following the body tag as CDataXMLNode.

Example



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" => "Oanoiaay neo?aa.",
                    "Id" => "{$this->provider_id}",
                    "Name" => "Oanoiaay neo?aa. {$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" => "Test service. {$this->add_tittle}",
                            "Description" => "SOAP server test service.",
                            "Copyright" => "(c) Bitrix.",
                            "Display" => "On",
                            "Category" => "ECOMMERCE_GENERAL",
                            "Parental" => "Unsupported",
                        )
                    )                        
                )                        
            
            );

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