本文整理汇总了PHP中soap_parser类的典型用法代码示例。如果您正苦于以下问题:PHP soap_parser类的具体用法?PHP soap_parser怎么用?PHP soap_parser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了soap_parser类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: parseResponse
/**
* processes SOAP message returned from server
*
* @param string unprocessed response data from server
* @return mixed value of the message, decoded into a PHP type
* @access private
*/
function parseResponse($data)
{
$this->debug('Entering parseResponse(), about to create soap_parser instance');
$parser = new soap_parser($data, $this->xml_encoding, $this->operation);
// if parse errors
if ($errstr = $parser->getError()) {
$this->setError($errstr);
// destroy the parser object
unset($parser);
return false;
} else {
// get SOAP headers
$this->responseHeaders = $parser->getHeaders();
// get decoded message
$return = $parser->get_response();
// add parser debug data to our debug
$this->debug($parser->debug_str);
// add document for doclit support
$this->document = $parser->document;
// destroy the parser object
unset($parser);
// return decode message
return $return;
}
}
示例2: parseRequest
/**
* processes SOAP message received from client
*
* @param 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
*/
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;
}
}
示例3: parse_request
/**
* 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
*
* This sets the fault field on error
*
* @param string $data XML string
* @access private
*/
function parse_request($data = '')
{
$this->debug('entering parse_request() on ' . date('H:i Y-m-d'));
$this->parse_http_headers();
$this->debug('got character encoding: ' . $this->xml_encoding);
// uncompress if necessary
if (isset($this->headers['Content-Encoding']) && $this->headers['Content-Encoding'] != '') {
$this->debug('got content encoding: ' . $this->headers['Content-Encoding']);
if ($this->headers['Content-Encoding'] == 'deflate' || $this->headers['Content-Encoding'] == 'gzip') {
// if decoding works, use it. else assume data wasn't gzencoded
if (function_exists('gzuncompress')) {
if ($this->headers['Content-Encoding'] == 'deflate' && ($degzdata = @gzuncompress($data))) {
$data = $degzdata;
} elseif ($this->headers['Content-Encoding'] == 'gzip' && ($degzdata = gzinflate(substr($data, 10)))) {
$data = $degzdata;
} else {
$this->fault('Server', 'Errors occurred when trying to decode the data');
return;
}
} else {
$this->fault('Server', 'This Server does not support compressed data');
return;
}
}
}
$this->request .= "\r\n" . $data;
$this->requestSOAP = $data;
// parse response, get soap parser obj
$parser = new soap_parser($data, $this->xml_encoding);
// parser debug
$this->debug("parser debug: \n" . $parser->debug_str);
// if fault occurred during message parsing
if ($err = $parser->getError()) {
$this->result = 'fault: error in msg parsing: ' . $err;
$this->fault('Server', "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('method name: ' . $this->methodname);
$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;
}
$this->debug('leaving parse_request() on ' . date('H:i Y-m-d'));
}
示例4: parseResponse
/**
* processes SOAP message returned from server
*
* @param array $headers The HTTP headers
* @param string $data unprocessed response data from server
* @return mixed value of the message, decoded into a PHP type
* @access private
*/
function parseResponse($headers, $data)
{
$this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' and type ' . $headers['content-type']);
if (!strstr($headers['content-type'], 'text/xml')) {
$this->setError('Response 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');
$parser = new soap_parser($data, $this->xml_encoding, $this->operation, $this->decode_utf8);
// add parser debug data to our debug
$this->appendDebug($parser->getDebug());
// if parse errors
if ($errstr = $parser->getError()) {
$this->setError($errstr);
// destroy the parser object
unset($parser);
return false;
} else {
// get SOAP headers
$this->responseHeaders = $parser->getHeaders();
// get decoded message
$return = $parser->get_response();
// add document for doclit support
$this->document = $parser->document;
// destroy the parser object
unset($parser);
// return decode message
return $return;
}
}
示例5: parse_request
/**
* parses request and posts response
*
* @param string $data XML string
* @return object SOAPx4 soapmsg object
* @access private
*/
function parse_request($data = "")
{
$this->debug("entering parseRequest() on " . date("H:i Y-m-d"));
// get headers
if (function_exists("getallheaders")) {
$this->headers = getallheaders();
foreach ($this->headers as $k => $v) {
$dump .= "{$k}: {$v}\r\n";
$this->debug("{$k}: {$v}");
}
// get SOAPAction header
if ($this->headers['SOAPAction']) {
$this->SOAPAction = str_replace('"', '', $this->headers['SOAPAction']);
}
// get the character encoding of the incoming request
if (strpos($headers_array['Content-Type'], "=")) {
$enc = str_replace("\"", "", substr(strstr($headers_array["Content-Type"], "="), 1));
if (preg_match("/^(ISO-8859-1|US-ASCII|UTF-8)\$/i", $enc)) {
$this->xml_encoding = $enc;
} else {
$this->xml_encoding = 'us-ascii';
}
}
$this->debug("got encoding: {$this->xml_encoding}");
} elseif (is_array($_SERVER)) {
$this->headers['User-Agent'] = $_SERVER['HTTP_USER_AGENT'];
$this->SOAPAction = $_SERVER['SOAPAction'];
}
$this->request = $dump . "\r\n\r\n" . $data;
// parse response, get soap parser obj
$parser = new soap_parser($data, $this->xml_encoding);
// if fault occurred during message parsing
if ($err = $parser->getError()) {
// parser debug
$this->debug("parser debug: \n" . $parser->debug_str);
$this->result = "fault: error in msg parsing or eval: {$err}";
$this->fault("Server", "error in msg parsing or eval:\n" . $err);
// return soapresp
return $this->fault->serialize();
// else successfully parsed request into soapval object
} else {
// get/set methodname
$this->methodname = $parser->root_struct_name;
$this->debug("method name: {$this->methodname}");
// does method exist?
if (!function_exists($this->methodname)) {
// "method not found" fault here
$this->debug("method '{$this->methodname}' not found!");
$this->debug("parser debug: \n" . $parser->debug_str);
$this->result = "fault: method not found";
$this->fault("Server", "method '{$this->methodname}' not defined in service '{$this->service}'");
return $this->fault->serialize();
}
if ($this->wsdl) {
if (!($this->opData = $this->wsdl->getOperationData($this->methodname))) {
$this->fault('Server', "Operation '{$this->methodname}' is not defined in the WSDL for this service");
return $this->fault->serialize();
}
}
$this->debug("method '{$this->methodname}' exists");
// evaluate message, getting back parameters
$this->debug("calling parser->get_response()");
$request_data = $parser->get_response();
$this->debug('Parsed response dump: $request_data');
// parser debug
$this->debug("parser debug: \n" . $parser->debug_str);
// verify that request parameters match the method's signature
if ($this->verify_method($this->methodname, $request_data)) {
// if there are parameters to pass
if ($request_data) {
$this->debug("calling '{$this->methodname}' with params");
if (!function_exists('call_user_func_array')) {
$this->debug("calling method using eval()");
$funcCall = $this->methodname . "(";
foreach ($request_data as $param) {
$funcCall .= "\"{$param}\",";
}
$funcCall = substr($funcCall, 0, -1) . ')';
$this->debug("function call:<br>{$funcCall}");
eval("\$method_response = {$funcCall};");
} else {
$this->debug("calling method using call_user_func_array()");
$method_response = call_user_func_array("{$this->methodname}", $request_data);
}
} else {
// call method w/ no parameters
$this->debug("calling {$this->methodname} w/ no params");
//$method_response = call_user_func($this->methodname);
$m = $this->methodname;
$method_response = $m();
}
$this->debug("done calling method: {$this->methodname}, received {$method_response} of type" . gettype($method_response));
// if we got nothing back. this might be ok (echoVoid)
//.........这里部分代码省略.........