android-json-rpc, отримуючи недійсну відповідь

Я намагаюся отримати відповіді від служби JSON-RPC на Android, в даний час я розробляю на Honeycomb 3.0.

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 ("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: за допомогою цієї нової версії ви використовуєте параметри send як масив або використовуєте JSONObject для відправки іменованих параметрів. Це можливо лише за умови використання версії 2.0 протоколу JSON-RPC.

2
додано

Це єдиний клієнт JSON-RPC , який я міг отримати працювати з Zend_Json_Server на Android (і я спробував кілька).

Не забудьте також встановити версію до 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
504 учасників

співтовариство javascript розробників в Telegram

android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.