【问题标题】:How to get String array from returned XML-RPC object?如何从返回的 XML-RPC 对象中获取字符串数组?
【发布时间】:2010-10-18 21:23:41
【问题描述】:

我正在使用 Apache java XML-RPC 最新版本。

Server中发送数组的代码如下:

LinkedList<String> messages = new LinkedList<String>();

public String[] getMessages() {
    System.out.println("Sent messages");
    return messages.toArray(new String[messages.size()]);
}

为了在客户端接收,我尝试过这样的事情:

String[] result = (String[]) client.execute("Message.getMessages", new Object[] {});

这应该将我收到的对象转换为正确的类型 (String[])。不幸的是,它没有,我收到以下错误:[Ljava.lang.Object;不能转换为 [Ljava.lang.String;

所以我想知道是否有人知道如何在 java XML-RPC 中正确发送和接收数组?

【问题讨论】:

    标签: java arrays apache xml-rpc


    【解决方案1】:

    基于http://ws.apache.org/xmlrpc/types.html,客户端API将始终返回Object[],即使服务器返回String[]

    我建议对结果进行循环并对每个成员调用 toString()。丑陋,但工作。

    【讨论】:

    • 我更改了客户端中的代码,将其转换为 Object[] 而不是 String[]。 Object[] 结果 = (Object[]) client.execute("Message.getMessages", new Object[] {});问题是这个数组的长度为 0,即使里面应该有项目。
    • 这就是您从服务器返回的内容...除非您没有包含将值添加到列表中的其他代码。
    • 是的,我在返回之前将值添加到列表中。
    • 您是否验证了返回这些消息的服务器?
    • 是的,由于某种原因,服务器没有发回数组中的项目,即使它们存在于服务器上并且可以使用 getFirst() 访问。我重写了一些代码,看起来它现在可以正常返回。分别在每个 Object 上强制转换 toString 似乎也有效。所以看起来它现在正在工作......感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2018-06-29
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多