4

所以官方的 XML-RPC 标准不支持 64 位值。但在现代,64 位值越来越普遍。

你如何处理这些?最常见的 XML-RPC 扩展是什么?有哪些语言绑定?我对 Python 和 C++ 特别感兴趣,但所有信息都值得赞赏。

4

4 回答 4

7

有些库确实支持 64 位扩展,但似乎没有标准。例如xmlrpc-c有一个所谓的 i8 但它不适用于 python(至少默认情况下不是)。

我建议:

  • 手动将整数转换为字符串并按原样发送。XMLRPC 无论如何都会将其转换为字符串,所以我会说这是合理的。
  • 将其分解为两个 32 位整数并按原样发送。
于 2008-09-20T12:29:16.743 回答
1

使用“i8”作为数据类型变得越来越普遍。我最近将它添加到我的 Perl XML-RPC 模块 ( http://metacpan.org/pod/RPC::XML ) 以响应来自需要它以便与用 Java 编写的服务器一起工作的大型团体的请求。我不知道服务器使用了什么工具包,但它已经接受了 i8 作为一种类型。

我觉得仍然需要解决的一件事是,“i4”的“int”别名是否也应该接受 i8,就像它目前接受 i4 的方式一样。或者,就此而言,如果类型为 i8 的参数应该安静地接受类型为 i4 的输入。当您不需要 SOAP 的所有覆盖范围时,XML-RPC 作为一种轻量级、低开销的协议具有很大的潜力,但它在 REST 和 SOAP 之间的宗教战争中经常被忽视。

XML-RPC 需要一些更新和修改,如果我们可以让原作者允许的话......

于 2008-09-22T06:42:22.740 回答
0

我不知道如何扩展 XMLRPC,但我确实找到了有关该主题的邮件:

在 XML-RPC 中,所有内容都作为字符串传输,所以我不认为这个选择真的那么糟糕——当然除了调用显式转换函数的额外笨拙之外。

但是不,XML-RPC 没有可以表示大于 2**32 的整数的数据类型。如果您可以接受丢失精度,则可以使用双精度数(但您仍然必须在发件人上显式转换)。

于 2008-09-20T08:35:45.433 回答
0

XML-RPC.NET自 2.5.0 版(2010 年 9 月 5 日)起支持 <i8>。

于 2011-03-27T07:20:40.947 回答