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

Мен әртүрлі әдістемелер мен сауалнама беттерін көрдім, бірақ мен әрқашан бірдей Ерекшелікке ие боламын. Мен қайда қателесіп жүрмін?

Тиісті код төменде көрсетілген. AsyncTask пайдаланылады, себебі 3.0 Android негізгі ағындағы желілік байланыстарға жол бермейді. Алдын-ала рақмет.

 @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
қосылды