Я изучаю использование службы XMLRPC для связи между системой Drupal и другой частью нашего веб-сайта.Я нашел пример кода для расширения php_xmlrpc в PHP, но обнаружил, что наш веб-хост не поддерживает это расширение.
Вместо этого они предоставляют пакет PEAR XML_RPC
Похоже, что эти два метода кодируются совершенно по-разному.,
PHP-код, который я использовал для настройки запроса, на основе http://drupal.org/node/339845
$method_name = 'user.login';
$user_credentials = array(
0 => 'example.user',
1 => 'password',
);
// any user-defined arguments for this service
// here we use the login credentials we specified at the top of the script
$user_args = $user_credentials;
$required_args=array();
// add the arguments to the request
foreach ($user_args as $arg) {
array_push($required_args, $arg);
}
...then call the XMLRPC functions here...
Я протестировал php_xmlrpc с WAMPserver на моем ПК и функцию xmlrpc_encode_request (http://us.php.net/manual/en/function.xmlrpc-encode-request.php)из php_xmlrpc возвращает то, что мне нужно, например:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>user.login</methodName>
<params>
<param>
<value>
<string>example.user</string>
</value>
</param>
<param>
<value>
<string>password</string>
</value>
</param>
</params>
</methodCall>
, тогда как функция PEAR XML_RPC_encode () возвращает это:
Array
(
[0] => example.user
[1] => password
)
object(XML_RPC_Value)#1 (2) {
["me"]=>
array(1) {
["string"]=>
string(10) "user.login"
}
["mytype"]=>
int(1)
}
Есть ли в PEAR XML_RPC другая функция, которая может кодировать параметрыв XML?