android-json-rpc、無効な応答を受け取っています

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

This is the library I am using: http://code.google.com/p/android-json-rpc/

and I am using this JSON-RPC service page for testing: http://www.raboof.com/projects/jayrock/demo.ashx

接続はうまくいくように見えますが、この例外が発生し続けます

org.alexd.jsonrpc.JSONRPCException: Invalid JSON response

私はさまざまな方法と調査ページを試みましたが、私はいつも同じ例外を取得します。どこが間違っていますか?

関連するコードは以下の通りです。 3.0 Androidはメインストリームでネットワーク接続を許可しないため、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 {

    @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;
    }
}
0

2 答え

私はあなたのシステムをライブラリの最後のバージョンを使ってテストしました。それは素晴らしい仕事です。あなたは私たちにcallInt( "カウンター")が必要です。それは大丈夫です。

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

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を使用している場合にのみ可能です。

2
追加された

これは私が得た唯一の JSON-RPC クライアントですAndroidでZend_Json_Serverを使用する(と私はいくつか試しました)。

サーバが明示的に2.0仕様を使用していない限り、このクライアントは動作しないので、バージョンを2.0にも設定してください。

    $server = new Zend_Json_Server();
    $server->setClass('My_Class');
    $server->getRequest()->setVersion("2.0");
    if ('GET' == $_SERVER['REQUEST_METHOD']) {
       //Indicate the URL endpoint, and the JSON-RPC version used:
        $server->setTarget('/ajax.php')
               ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);

       //Grab the SMD
        $smd = $server->getServiceMap();

       //Return the SMD to the client
        header('Content-Type: application/json');
        echo $smd;
        return;
    }

$server->handle();
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript