Как да използвам 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: Не може да преобразува резултата в String, който идва от метода 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);, така че пълното име на метода "add" би било "calc.add". Така че просто опитайте да следвате във вашия код:

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

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

person SS.    schedule 06.09.2013