Java XML-RPC:如何将数组或列表作为参数传递给服务器上的方法?

时间:2016-10-16 15:35:55

标签: java xml-rpc xmlrpcclient

我正在尝试使用XmlRpcClient来调用XmlRpcServer上的方法,该方法根据指定索引列表从数据库中读取数据。列表的长度不固定,因此内部可能有5或500个值。我想将这个索引列表从客户端传递到服务器。

我已经尝试了几种将索引列表传递给服务器的方法,但都失败了,主要是出现此错误:

org.apache.xmlrpc.XmlRpcException: No method matching arguments: [Ljava.lang.Object;
at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197)
at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156)
at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69)
at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:137)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:126)
at rpc.RPCClient.read(RPCClient.java:47)
at test.Test.main(Test.java:19)

现在我正在尝试将as作为一个Object传递,然后我将其转换回ArrayList(我现在让方法返回true):

客户端

// Array containing the indexes
ArrayList<Integer> indexList = new ArrayList<>();

// Client setup
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
client = new XmlRpcClient();
client.setConfig(config);

// RPC execution
result = (boolean) client.execute("rpc.read", new Object [] {indexList});

服务器上的方法

public boolean read(Object[] o) {
    ArrayList<Integer> indexList= new ArrayList<>();

    for (int i = 0; i < o.length; i++) {
        indexList= (ArrayList<Integer>) o[i];
    }

    return true;
}

这会产生上述错误。

我可以将哪种数据类型传递给服务器上的方法?是否无法传递多个值,我是否必须分别为每个索引调用方法?

0 个答案:

没有答案