0

我正在尝试将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: Cannot convert result to String 这来自 callString 方法。

有没有人遇到过这个错误或者知道更好的库来用于Android客户端到Java服务器的JSON?

4

3 回答 3

1

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

希望这可以帮助。

于 2013-04-11T19:53:34.307 回答
1

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

于 2013-09-10T18:57:01.820 回答
0

我没有使用过这两个库,但是通过简单的观察,似乎 jsonrpc 服务器库使用 注册了一个前缀处理程序executor.addHandler("calc", calcImpl, Calculator.class);,因此“add”方法的完全限定名称将是“calc.add”。因此,只需尝试在您的代码中执行以下操作:

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

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

于 2013-09-06T21:47:58.700 回答