2009-01-20 59 views
2

有沒有人通過Xml-rpc使用Python或Perl來獲取數據?來自Python/Perl的XML-RPC和Continuum

我使用的continuum.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

任何人表現更好......?

回答

1

是的......用Perl。我使用了XML::RPC。事實上,我使用它編寫了CPAN模塊WWW::FreshMeat::API來訪問Freshmeats XML-RPC API,所以我知道它確實工作正常!

使用XML :: RPC與Freshmeat的 「系統。*」 我要求工作....

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' 
     ]; 

希望有所幫助。

1

你描述的不是客戶端庫的一部分 - 這是服務器是否實現這些方法的問題。

我是RPC::XML Perl模塊的作者,在我提供的服務器類中,我還提供了實現基本的「自省」API,它已經成爲XML-RPC領域的一種半標準。但即使如此,服務器類的用戶可能會選擇不啓用自檢API。

當然,我不能說其他的XML-RPC實現。