0

Android で JSON-RPC サービスから応答を取得しようとしています。現在、3.0 Honeycomb で開発しています。

これは私が使用しているライブラリです: http://code.google.com/p/android-json-rpc/

そして、テスト用にこの JSON-RPC サービス ページを使用しています: http://www.raboof.com/projects/jayrock/demo.ashx

接続は機能しているようですが、この例外が発生し続けます

org.alexd.jsonrpc.JSONRPCException: Invalid JSON response

さまざまな方法と調査ページを試しましたが、常に同じ例外が発生します。どこが間違っていますか?

関連するコードは以下です。Android 3.0 以降、メイン ストリームでのネットワーク接続が許可されていないため、AsyncTask が使用されます。前もって感謝します。

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    JSONHandler task = new JSONHandler();
    task.execute(new String[] {"http://www.raboof.com/projects/jayrock/demo.ashx"});    
}

private class JSONHandler extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {
        for (String url : urls) {
            JSONRPCClient client = JSONRPCClient.create(url);
            client.setConnectionTimeout(2000);
            client.setSoTimeout(2000);

            try {
                client.call("counter");
            } catch (JSONRPCException e) {
                e.printStackTrace(); //Invalid JSON Response caught here
            }
        }
        return null;
    }
}
4

2 に答える 2

2

ライブラリの最新バージョンを使用してシステムをテストしました。それはうまくいきます。callInt("counter") を呼び出す必要があり、問題ありません。

私が使用したコードがあります:

public JSONRPCClient client = JSONRPCClient.create("http://www.raboof.com/projects/jayrock/demo.ashx", JSONRPCClient.Versions.VERSION_2);
try{
    int resInt = client.callInt("counter");
} catch (JSONException e) {
    Log.i("JSON-RPC Client", e.toString());
}

これが役立つことを願っています。

PS: この新しいバージョンでは、パラメーター送信を配列として使用するか、JSONObject を使用して名前付きパラメーターを送信します。これは、JSON-RPC プロトコルのバージョン 2.0 を使用している場合にのみ可能です。

于 2012-05-18T00:20:53.610 に答える