You are here

function soap_server::parseRequest in Salesforce Suite 5.2

Same name in this branch
  1. 5.2 includes/nusoap.php \soap_server::parseRequest()
  2. 5.2 includes/nusoap.orig.php \soap_server::parseRequest()
Same name and namespace in other branches
  1. 5 includes/nusoap.php \soap_server::parseRequest()
  2. 5 includes/nusoap.orig.php \soap_server::parseRequest()

* processes SOAP message received from client * *

Parameters

array $headers The HTTP headers: * @param string $data unprocessed request data from client * @return mixed value of the message, decoded into a PHP type * @access private

2 calls to soap_server::parseRequest()
soap_server::parse_request in includes/nusoap.php
* parses a request * * The following fields are set by this function (when successful) * * headers * request * xml_encoding * SOAPAction * request * requestSOAP * methodURI * methodname * methodparams * requestHeaders * document * *…
soap_server::parse_request in includes/nusoap.orig.php
* parses a request * * The following fields are set by this function (when successful) * * headers * request * xml_encoding * SOAPAction * request * requestSOAP * methodURI * methodname * methodparams * requestHeaders * document * *…

File

includes/nusoap.orig.php, line 3805

Class

soap_server
soap_server allows the user to create a SOAP server that is capable of receiving messages and returning responses

Code

function parseRequest($headers, $data) {
  $this
    ->debug('Entering parseRequest() for data of length ' . strlen($data) . ' and type ' . $headers['content-type']);
  if (!strstr($headers['content-type'], 'text/xml')) {
    $this
      ->setError('Request not of type text/xml');
    return false;
  }
  if (strpos($headers['content-type'], '=')) {
    $enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
    $this
      ->debug('Got response encoding: ' . $enc);
    if (eregi('^(ISO-8859-1|US-ASCII|UTF-8)$', $enc)) {
      $this->xml_encoding = strtoupper($enc);
    }
    else {
      $this->xml_encoding = 'US-ASCII';
    }
  }
  else {

    // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
    $this->xml_encoding = 'ISO-8859-1';
  }
  $this
    ->debug('Use encoding: ' . $this->xml_encoding . ' when creating soap_parser');

  // parse response, get soap parser obj
  $parser = new soap_parser($data, $this->xml_encoding, '', $this->decode_utf8);

  // parser debug
  $this
    ->debug("parser debug: \n" . $parser
    ->getDebug());

  // if fault occurred during message parsing
  if ($err = $parser
    ->getError()) {
    $this->result = 'fault: error in msg parsing: ' . $err;
    $this
      ->fault('Client', "error in msg parsing:\n" . $err);

    // else successfully parsed request into soapval object
  }
  else {

    // get/set methodname
    $this->methodURI = $parser->root_struct_namespace;
    $this->methodname = $parser->root_struct_name;
    $this
      ->debug('methodname: ' . $this->methodname . ' methodURI: ' . $this->methodURI);
    $this
      ->debug('calling parser->get_response()');
    $this->methodparams = $parser
      ->get_response();

    // get SOAP headers
    $this->requestHeaders = $parser
      ->getHeaders();

    // add document for doclit support
    $this->document = $parser->document;
  }
}