Question

Is there any possibility to allow xmlrpc extensions (datatype long int) for the Python simplexmlrpc server?

The client uses Apache xmlrpc, which allows 8 byte integers.

Basically, I'm using the example code with this function to test it:

def FcnRLong():
    x=8000000000L
    return x

which results in this error:

Java exception occurred:
org.apache.xmlrpc.XmlRpcException: <type 'exceptions.OverflowError'>:long int exceeds XML-RPC limits

Any ideas? Is there any xmlrpc server for Python 2.7 which supports long int?

Était-ce utile?

La solution

The second line in the following snippet changes the marshalling for long integers to emit <i8> instead of <int>. Yes, it's not too pretty, but should work and fix the problem.

>>> import xmlrpclib
>>> xmlrpclib.Marshaller.dispatch[type(0L)] = lambda _, v, w: w("<value><i8>%d</i8></value>" % v)
>>> xmlrpclib.dumps((2**63-1,))
'<params>\n<param>\n<value><i8>9223372036854775807</i8></value></param>\n</params>\n'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top