XML-RPC и Continuum от Python / Perl
Кто-нибудь имел успех с получением данных через Xml-rpc, используя Python или Perl...?
Я использую библиотеку Continumum.py:
#!/usr/bin/env python
from continuum import *
c = Continuum( "http://localhost:8080/continuum/xmlrpc" )
или же:
#!/usr/bin/perl
use Frontier::Client;
my $url = "http://dev.server.com:8080/continuum/xmlrpc";
my $client = RPC::XML::Client->new($url);
my $res = $client->send_request('system.listMethods');
print " Response class = ".(ref $res)."\n";
print " Response type = ".$res->type."\n";
print " Response string = ".$res->as_string."\n";
print " Response value = ".$res->value."\n";
дает: No such handler: system.listMethods
Кто-нибудь был лучше...?
2 ответа
То, что вы описываете, не является частью клиентской библиотеки - вопрос в том, реализует ли сервер эти методы.
Я являюсь автором модуля RPC:: XML Perl, и в классе сервера, который я предоставляю, я также предоставляю реализацию базового API "самоанализа", который стал своего рода полустандартным в области XML-RPC. Но даже в этом случае пользователи серверного класса могут не активировать API самоанализа.
Конечно, я не могу говорить с другими реализациями XML-RPC.
Да... с Perl.
Я использовал XML::RPC. На самом деле я написал CPAN-модуль WWW::FreshMeat::API, используя его для доступа к Freshmeats XML-RPC API, так что я знаю, что он работает хорошо!
Используя XML::RPC с Freshmeat, вызовы "system.*" Работают для меня....
use XML::RPC;
use Data::Dumper;
my $fm = XML::RPC->new( 'http://freshmeat.net/xmlrpc/' );
# need to put in your Freshmeat username/password here
my $session = $fm->call( 'login', { username => 'user', password => 'pass' });
my $x = $fm->call('system.listMethods');
say Dumper( $x );
Дает мне....
$VAR1 = [
'system.listMethods',
'system.methodHelp',
'system.methodSignature',
'system.describeMethods',
'system.multiCall',
'system.getCapabilities',
'publish_release',
'fetch_branch_list',
'fetch_project_list',
'fetch_available_licenses',
'fetch_available_release_foci',
'fetch_release',
'login',
'logout',
'withdraw_release'
];
Надеюсь, это поможет.