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

Posted

技术标签:

【中文标题】如何使用 android-json-rpc 进行 Android(客户端)/Java(服务器)设置?【英文标题】:How to use android-json-rpc for Android(client)/Java(server) setup? 【发布时间】:2013-04-11 19:40:15 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

希望这会有所帮助。

【讨论】:

什么结果?什么都没有返回,我正在使用 jars 你从服务器得到的结果,也许你忘了你输入服务的url?在您粘贴的代码中,它是 service/uri,就像在示例中一样【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于如何使用 android-json-rpc 进行 Android(客户端)/Java(服务器)设置?的主要内容,如果未能解决你的问题,请参考以下文章

android-json-rpc 无法解析静态字段 253 (VERSION_2)

Android System.error JSONRPCException: IO 错误

黑莓 / j2me 的 rpc 库 ( json / xml / * )

如何使用JVisualVM进行性能分析

如何使用Docker 进行Java 开发

如何使用JVisualVM进行性能分析