xmlrpc响应数据类型可能很长?

时间:2013-08-30 12:47:26

标签: python python-2.7 xml-rpc xmlrpclib simplexmlrpcserver

是否有可能允许Python simplexmlrpc服务器的xmlrpc扩展(数据类型long int)?

客户端使用Apache xmlrpc,allows 8 byte integers

基本上,我正在使用带有此功能的example code来测试它:

def FcnRLong():
    x=8000000000L
    return x

会导致此错误:

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

有什么想法吗?是否有支持long int的Python 2.7的xmlrpc服务器?

1 个答案:

答案 0 :(得分:10)

以下代码段中的第二行更改了长整数的编组,以便发出<i8>而不是<int>。是的,它不是太漂亮,但应该工作并解决问题。

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