如何使用 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 错误