是否有可能允许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服务器?
答案 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'