如何使用android-json-rpc进行Android(客户端)/ Java(服务器)设置?

时间:2013-04-11 19:40:15

标签: java android json json-rpc

我正在尝试将https://code.google.com/p/android-json-rpc/用于android并在java服务器上使用https://github.com/RitwikSaikia/jsonrpc

我已经按照android-json-rpc客户端和jsonrpc服务器设置的示例进行了操作。

在我的Android应用程序中使用android-json-rpc时,我会执行以下操作。

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-interfaceshttps://github.com/RitwikSaikia/jsonrpc#hosting-the-service

处跟踪了示例

当我调用方法时

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

它抛出一个JSONRPCException:无法将结果转换为来自callString方法内部的String。

之前是否有人遇到此错误或者知道更好的用于Android客户端的库到JSON的Java服务器?

3 个答案:

答案 0 :(得分:1)

我没有尝试过该库,但我知道当json未正确解析时会发生此异常,尝试复制结果并通过json验证器运行,如JSONLint

希望这会有所帮助。

答案 1 :(得分:1)

我实际上只是在Android客户端和Java服务器端使用https://github.com/FasterXML/jackson并使用反射创建了我自己的servlet来处理在Java服务器上调用方法并在Android客户端上获取结果

答案 2 :(得分:0)

我没有使用过任何一个库,但是从简要地看一下,似乎jsonrpc服务器库用executor.addHandler("calc", calcImpl, Calculator.class);注册了一个前缀处理程序,所以“add”方法的完全限定名称会是“calc.add”。所以,只需在您的代码中尝试:

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

无需调用client.callString("SimpleCalculatorImpl");,因为callString()应该用于返回String结果的RPC调用。