Как использовать android-json-rpc для установки Android (клиент)/Java (сервер)?

Я пытаюсь использовать https://code.google.com/p/android-json-rpc/ для Android и используйте https://github.com/RitwikSaikia/jsonrpc на Java-сервер.

Я следовал примерам настройки клиента android-json-rpc и сервера jsonrpc.

При использовании android-json-rpc в моем приложении для Android я делаю следующее.

JSONRPCClient client = JSONRPCClient.create("http://service/uri",JSONRPCParams.Versions.VERSION_2);
client.setConnectionTimeout(2000);
client.setSoTimeout(2000);
try 
{
  client.callString("SimpleCalculatorImpl");
  double i = client.callDouble("add", 56, 25);
}
catch (JSONRPCException e)
{
  e.printStackTrace();
}

Для сервера Java я следовал образцу на https://github.com/RitwikSaikia/jsonrpc#defining-interfaces и на https://github.com/RitwikSaikia/jsonrpc#hosting-the-service

Когда я вызываю метод

String string = client.callString("SimpleCalculatorImpl");

Он генерирует исключение JSONRPCException: невозможно преобразовать результат в строку, которая исходит из метода callString.

Кто-нибудь сталкивался с этой ошибкой раньше или знает, как лучше использовать библиотеку для клиента Android на сервере Java для JSON?


person zurbergram    schedule 11.04.2013    source источник


Ответы (3)


я не пробовал библиотеку, но я знаю, что это исключение происходит, когда json анализируется неправильно, попробуйте скопировать результат и запустить его через валидатор json, например JSONLint

надеюсь это поможет.

person Dan Levin    schedule 11.04.2013
comment
Какой результат? Ничего не возвращается, и я использую банки - person zurbergram; 12.04.2013
comment
результат, который вы получаете от сервера, может быть, вы забыли ввести URL-адрес службы? в коде, который вы вставили, это service/uri, как в примерах - person Dan Levin; 14.04.2013

На самом деле я просто использовал https://github.com/FasterXML/jackson как на стороне клиента Android, так и на сервере Java. стороны и создал свой собственный сервлет с отражением для обработки вызовов методов на сервере Java и получения результатов на клиенте Android.

person zurbergram    schedule 10.09.2013

Я не использовал ни одну из библиотек, но при беглом взгляде кажется, что серверная библиотека jsonrpc регистрирует обработчик префикса с помощью executor.addHandler("calc", calcImpl, Calculator.class);, поэтому полное имя метода «добавить» будет «calc.add». Поэтому просто попробуйте выполнить в своем коде:

double i = client.callDouble("calc.add", 56, 25);

Нет необходимости вызывать client.callString("SimpleCalculatorImpl");, так как callString() следует использовать для вызовов RPC, которые возвращают результат String.

person SS.    schedule 06.09.2013