mike marsh wrote:
> I need to connect to a Zope database via XmlRpc.
> Someone else maintains the xmlrpc methods and code on
> the Zope server.  I try calling a particular method,
> but an XmlRpcException gets thrown.  The exception
> string says "cannot marshal <type 'long int'>".  I
> suppose I need an XmlRpc parser that can interpret
> <long int> and create a Long object.  

This is a limitation of the server, not of your client,
so mucking with the client side parsing won't help you.

The XML-RPC spec (http://xmlrpc.org/spec) doesn't allow
long integer values. The best you can do in general is 
encode the long value as a string with 

    long value = ...;
    String encodedValue = Long.toString(value);

and decode returned string values as longs with

    String value = ...;
    long decodedValue;
    try {
        decodedValue = Long.parseLong(value);
    }
    catch (NumberFormatException e) {
        decodedValue = 0; // or some sentinel value
    }

But this all depends on the server doing the right thing
with string-encoded long values. Check with the database 
maintainer to find out how the Zope database can be used 
via XML-RPC with non-XML-RPC types.

--tim

Reply via email to