Профессиональное программирование на PHP

Страница 392 из 591


XML-RPC 405

Методы можно использовать совместно, получая, таким образом, полную картину возможностей XML-RPC-сервера. Ниже приведен сценарий, который отображает документацию и сигнатуры для каждого метода на заданном XML-RPC-сервере:

<?РНР

require_once 'XML/RPC.php'; if ($argc != 2) {

print "Необходимо задать URL-адрес.\n";

exit;

}

$url = parse_url($argv[1]);

$client = new XML_RPC_Client($url['path'], $url ['host']); $msg = new XML_RPC_Message('system.listMethods')• $result = $client->send($msg); if ($result->faultCode()) { echo "Ошибка\п";

}

$methods = XML_RPC_decode($result->value()); foreach($methods as $method) {

$message = new XML_RPC_Message('system.methodSignature1,

array(new XML_RPC_Value($method))); $response = $client->send($message)->value(); print "Метод $method:\n"; $docstring = XML_RPC_decode( $client->send( new XML_RPC_Message(1 system.methodHelp',

array(new XML_RPC_Value($method)) )

)->value ()

) ;

if($docstring) {

print "$docstring\n";

}

else {

print "НЕТ ДОКУМЕНТАЦИИn";

}

$response = $client->send($message)->value(); if($response->kindOf() == 'array') {

$signatures = XML_RPC_decode($response); for($i =0; $i < count($signatures); $i++) { $return = array_shift($signatures[$i]); $params = implode(", ", $signatures[$i]); print "Сигнатура #$i: $return $method($params)\n";

} else {

print "НЕТ СИГНАТУРЫ\п";

}

print "\n";

}

?>

Для системы Serendipity сценарий сгенерирует следующий вывод: > xmlrpc-listmethods.php http://www.example.org/serendipity_xmlrpc.php




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006