import v1.1.0_RC2 | 2009-09-20
This commit is contained in:
@ -15,8 +15,9 @@
|
||||
* @category Zend
|
||||
* @package Zend_XmlRpc
|
||||
* @subpackage Client
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Client.php 17759 2009-08-22 21:26:21Z lars $
|
||||
*/
|
||||
|
||||
|
||||
@ -70,7 +71,7 @@ require_once 'Zend/XmlRpc/Fault.php';
|
||||
* @category Zend
|
||||
* @package Zend_XmlRpc
|
||||
* @subpackage Client
|
||||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_XmlRpc_Client
|
||||
@ -267,10 +268,13 @@ class Zend_XmlRpc_Client
|
||||
|
||||
$http->setHeaders(array(
|
||||
'Content-Type: text/xml; charset=utf-8',
|
||||
'User-Agent: Zend_XmlRpc_Client',
|
||||
'Accept: text/xml',
|
||||
));
|
||||
|
||||
if ($http->getHeader('user-agent') === null) {
|
||||
$http->setHeaders(array('User-Agent: Zend_XmlRpc_Client'));
|
||||
}
|
||||
|
||||
$xml = $this->_lastRequest->__toString();
|
||||
$http->setRawData($xml);
|
||||
$httpResponse = $http->request(Zend_Http_Client::POST);
|
||||
@ -313,29 +317,36 @@ class Zend_XmlRpc_Client
|
||||
$success = false;
|
||||
}
|
||||
if ($success) {
|
||||
$validTypes = array(
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_I4,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_NIL,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_STRING,
|
||||
Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT,
|
||||
);
|
||||
$params = (array)$params;
|
||||
foreach ($params as $key => $param) {
|
||||
if (is_array($param) && empty($param)) {
|
||||
$type = 'array';
|
||||
foreach ($signatures as $signature) {
|
||||
if (!is_array($signature)) {
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($key + 1, $signature)) {
|
||||
$type = $signature[$key + 1];
|
||||
$type = (in_array($type, array('array', 'struct'))) ? $type : 'array';
|
||||
break;
|
||||
}
|
||||
$type = Zend_XmlRpc_Value::AUTO_DETECT_TYPE;
|
||||
foreach ($signatures as $signature) {
|
||||
if (!is_array($signature)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($signature['parameters'][$key])) {
|
||||
$type = $signature['parameters'][$key];
|
||||
$type = in_array($type, $validTypes) ? $type : Zend_XmlRpc_Value::AUTO_DETECT_TYPE;
|
||||
}
|
||||
$params[$key] = array(
|
||||
'type' => $type,
|
||||
'value' => $param
|
||||
);
|
||||
}
|
||||
$params[$key] = Zend_XmlRpc_Value::getXmlRpcValue($param, $type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$request = new Zend_XmlRpc_Request($method, $params);
|
||||
$request = $this->_createRequest($method, $params);
|
||||
|
||||
$this->doRequest($request);
|
||||
|
||||
@ -352,4 +363,14 @@ class Zend_XmlRpc_Client
|
||||
|
||||
return $this->_lastResponse->getReturnValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create request object
|
||||
*
|
||||
* @return Zend_XmlRpc_Request
|
||||
*/
|
||||
protected function _createRequest($method, $params)
|
||||
{
|
||||
return new Zend_XmlRpc_Request($method, $params);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user