2013-04-11 67 views
0

我試圖用https://code.google.com/p/android-json-rpc/針對Android和Java服務器上使用https://github.com/RitwikSaikia/jsonrpc如何在Android(客戶端)/ Java(服務器)設置中使用android-json-rpc?

我遵循了Android的jsonrpc客戶端和服務器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方法內部。

有沒有人遇到過這種錯誤或更好的庫知道要使用的Android客戶端爲JSON Java服務器?

回答

1

其實我只是用https://github.com/FasterXML/jackson雙方的Android客戶端和Java服務器端,並創建了自己的servlet與反射處理撥打電話的方法的Java服務器上並取回結果的Android客戶端

1

我沒有嘗試過的庫,但我知道,這發生異常時,JSON是,不能正確解析,試圖通過一個JSON驗證複製的結果,並運行它像JSONLint

希望這會有所幫助。

+0

什麼結果呢?什麼都沒有返回,我使用罐子 – zurbergram 2013-04-11 20:51:22

+0

從服務器得到的結果,也許你忘了喲把服務的URL?在你粘貼的代碼中,就像例子中的http:// service/uri – 2013-04-13 23:25:26

0

我沒有使用任何一個庫,但從簡單的看它,似乎jsonrpc服務器庫註冊一個前綴處理程序executor.addHandler("calc", calcImpl, Calculator.class);,所以「add」方法的完全限定名稱將是「calc 。加」。所以,只是儘量在你的代碼如下:

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

不需要調用client.callString("SimpleCalculatorImpl");,爲callString()應該用於RPC調用返回String的結果。