<font size=2 face="sans-serif">Thanks dieter, The issue is solved.</font>
<br>
<br><font size=2 face="sans-serif">I use SmartSniff to get the xml message
send by java client, and python client, find the difference.</font>
<br>
<br><font size=2 face="sans-serif">Define a new class:</font>
<br><font size=2 face="sans-serif">class MyData(object):</font>
<br><font size=2 face="sans-serif">    def __init__(self,myKey,myValue):</font>
<br><font size=2 face="sans-serif">        self.Key
= myKey</font>
<br><font size=2 face="sans-serif">        self.Value
= myValue</font>
<br>
<br><font size=2 face="sans-serif">and use this object as parameter, then
the server return correct reply.</font>
<br>
<br><font size=2 face="sans-serif">para = MyData(0.5,0.01)</font>
<br>
<br><tt><font size=2>server.Fun([para ], [ ] )</font></tt>
<br>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">dieter <dieter@handshake.de></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">python-list@python.org</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">01/23/2015 03:26 PM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">Re: python client call Java server by
xmlrpc</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Sent by:</font>
<td><font size=1 face="sans-serif">"Python-list" <python-list-bounces+fan.ding1=kodak.com@python.org></font></table>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>fan.ding1@kodak.com writes:<br>
<br>
> I have xmlrpc server written in Java, and it has a method like<br>
><br>
> Fun( vector, vector), the vector is array of user-defined object,
which is <br>
> a class  extends HashMap.<br>
><br>
> And I call it like:<br>
><br>
> server = xmlrpclib.ServerProxy("</font></tt><a href=http://myserver/><tt><font size=2>http://myserver</font></tt></a><tt><font size=2>")<br>
><br>
> server.Fun( [ {"0.5":0.1}], [ ] )<br>
><br>
> It always fails with error<br>
><br>
> 'No method matching arguments: , [Ljava.lang.Object;, [Ljava.lang.Object;
<br>
> '<br>
> Does anyone use this before? It troubles me some days.<br>
<br>
The standard XML-RPC protocol knows only about a very small set<br>
of types. Extensions are required to pass on more type information.<br>
<br>
The (slightly confusing) error message (you got) indicates<br>
that the XML-RPC framework on the server side has<br>
not correctly recognized the types of the incoming parameters:<br>
it should recognize the "[]" (as this is a standard type)<br>
(and maybe the open "[" indicates that it has indeed)<br>
but apparently, it got the content elements only as<br>
generalized "Object"s not something specific (extending "HashMap").<br>
<br>
<br>
The "xmlrpclib" in the Python runtime libary does not support<br>
extensions to pass on additional type information (as far as I know).<br>
This might indicate that you cannot use Python's "xmlrpclib"
out<br>
of the box to interact with your Java implemented XML-RPC service.<br>
<br>
<br>
I would approach the problem as follows.<br>
<br>
Implement a Java based XML-RPC client for your service. Should this<br>
fail, then your service implementation has too complex types for<br>
XML-RPC (and you must simplify them).<br>
<br>
Should you succeed, you can use a tcp logger (or maybe debugging<br>
tools of the Java libary implementing XML-RPC) to determine<br>
the exact messages exchanged between client and server.<br>
This way, you can learn how your Java libraries pass on non standard<br>
type information. You can then derive a new class from Python's "xmlrpclib"<br>
and implement there this type information passing extension (apparently<br>
used by your Java libaries).<br>
<br>
-- <br>
</font></tt><a href="https://mail.python.org/mailman/listinfo/python-list"><tt><font size=2>https://mail.python.org/mailman/listinfo/python-list</font></tt></a><tt><font size=2><br>
</font></tt>
<br><font size=2 face="sans-serif"><br>
</font>