1

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)

今、私は ArrayList にキャストバックする Object として渡そうとしています (私は今のところメソッドが 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;
}

これにより、上記のエラーが発生します。

サーバー上のメソッドに渡すことができるデータ型はどれですか? 複数の値を渡すことはできませんか?代わりに、インデックスごとにメソッドを個別に呼び出す必要がありますか?

4

0 に答える 0