#java #xml-rpc #xmlrpcclient
#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)
Прямо сейчас я пытаюсь передать как объект, который я затем отбрасываю обратно в 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;
}
Это приводит к ошибке, описанной выше.
Какой тип данных я могу передать методу на сервере? Разве невозможно передать несколько значений и должен ли я вызывать метод для каждого индекса отдельно?