【发布时间】:2014-05-14 02:00:57
【问题描述】:
我正在尝试使用 apache xmlrpc (3.1.3) 库运行 XML RPC 服务器。
我在此服务器上实现了 XML RPC 规范 (http://xmlrpc.scripting.com/spec) 中要求的方法“system.listMethods”。
为了检查这个服务器是否遵循 XML RPC 规范,我做了一个客户端,它使我能够向服务器发出一个 Post 请求,发送我想要的 XML 文件(我把它写成一个 Sring 并且客户端发送它) .
然后,我的客户端打印服务器 XML 响应。
它有效,但是当我发布此请求时:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
它返回给我这个响应:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions">
<params>
<param>
<value><array><data>
<value>system.listMethods</value>
<value>system.methodSignature</value>
<value>system.methodHelp</value>
<value>Calculator.add</value>
<value>Calculator.subtract</value>
</data></array></value>
</param>
</params>
</methodResponse>
根据规范,这是“错误的”。 这是我的方法列表,但结构中缺少它们。例如,它们应该是:
<value><string>system.listMethods</string></value>
插入
<value>system.listMethods</value>
在我的服务器中,“system.listMethods”方法返回一个 Object[] 类型的 java 对象(我尝试将其更改为 String[],但不影响结果)。 根据 apache 文档 (http://ws.apache.org/xmlrpc/types.html),这个 java 类型应该变成我应该使用的 XML-RCP 数组类型。
如何使我的服务器遵循 XML-RCP 规范?
在这种情况下,我只需在某处添加“<string>”或“</string>”,但如规范数组类型示例所示,我应该可以混合数据类型:
<array>
<data>
<value><i4>12</i4></value>
<value><string>Egypt</string></value>
<value><boolean>0</boolean></value>
<value><i4>-31</i4></value>
</data>
</array>
所以我试图找到一个解决方案,让我也能做到这一点。
【问题讨论】: