2011-10-28 18 views
0

AndroidでJSON-RPCサービスからの応答を取得しようとしていますが、現在3.0 Honeycombで開発中です。android-json-rpc、無効な応答を受け取りました

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

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

接続が動作しているようですが、私はこの例外を得続ける

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

関連コードは以下のとおりです。 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<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; 
    } 
} 

答えて

2

すると、このクライアントは、サーバーが明示的に2.0仕様を使用していない限り、動作しないよう、また、2.0にバージョンを設定してください。それは素晴らしい仕事です。あなたは私たちに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を使用している場合にのみ可能です。

0

これは、私はAndroid上でZend_Json_Serverはで仕事を得ることができました(と私はいくつかを試してみた)だけJSON-RPCクライアントです。私は、ライブラリの最後のバージョンを使用してシステムをテストした

$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(); 
関連する問題