我正在尝试将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-interfaces和https://github.com/RitwikSaikia/jsonrpc#hosting-the-service
处跟踪了示例当我调用方法时
String string = client.callString("SimpleCalculatorImpl");
它抛出一个JSONRPCException:无法将结果转换为来自callString方法内部的String。
之前是否有人遇到此错误或者知道更好的用于Android客户端的库到JSON的Java服务器?
答案 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调用。