Giter Club home page Giter Club logo

android-json-rpc's People

Forkers

poolooloo

android-json-rpc's Issues

Issue when adding array as params, corrupts rest of the params

What steps will reproduce the problem?
1. Create array of two strings
2. Add array as param
3. Add a second string as param
4. Observe in debug mode that 2nd param is corrupted

What is the expected output? What do you see instead?

The 2nd param looks like a serialized pointer form? Not sure.. I get something 
like this on the php side: [Ljava.lang.String;@44f42cb8

What version of the product are you using? On what operating system?

0.3.4 on Mac

Please provide any additional information below.

In file JSONRPCClient, in method protected JSONObject doRequest(String method, 
Object[] params) throws JSONRPCException

You need to change:

            if(params[i].getClass().isArray()){
                jsonParams.put(getJSONArray((Object[])params[i]));
            }

            jsonParams.put(params[i]);

to

            if(params[i].getClass().isArray()){
                jsonParams.put(getJSONArray((Object[])params[i]));
            }
            else {
                jsonParams.put(params[i]);
            }

Then everything works as expected. 

Original issue reported on code.google.com by [email protected] on 10 Aug 2012 at 9:15

Maven central

Would you mind uploading the library to maven central or some other public 
maven repository?

Original issue reported on code.google.com by [email protected] on 5 Aug 2013 at 8:41

Possible wrong usage of named parameter "jsonrpc"

What steps will reproduce the problem?
1. Call any method with JSON-RPC version 2 specified in request on a version 2 
Server. 
For example:

JSONRPCClient client = 
JSONRPCClient.create("http://localhost:3000",JSONRPCParams.Versions.VERSION_2);
client.setConnectionTimeout(2000);
client.setSoTimeout(2000);
try 
{
    int result = client.callInt("add",5,6);
} catch (JSONRPCException e) {
    e.printStackTrace();
}

What is the expected output? What do you see instead?

expected request: 
{"id":1445201434,"jsonrpc":"2.0","method":"add","params":[5,6]}
expected result:  {"jsonrpc":"2.0","id":1445201434,"result":11}

actual request: {"id":-400656856,"method":"add","params":[5,6]}
actual result: org.alexd.jsonrpc.JSONRPCException: {"message":"Invalid 
request","code":-32600}

What version of the product are you using? On what operating system?
svn version 58 (http://android-json-rpc.googlecode.com/svn/trunk)

Please provide any additional information below.

The following changes are fixing the "Invalid Request" response.

Index: android-json-rpc/src/org/alexd/jsonrpc/JSONRPCClient.java
===================================================================
--- android-json-rpc/src/org/alexd/jsonrpc/JSONRPCClient.java   (revision 58)
+++ android-json-rpc/src/org/alexd/jsonrpc/JSONRPCClient.java   (working copy)
@@ -86,6 +86,9 @@
            jsonRequest.put("id", UUID.randomUUID().hashCode());
            jsonRequest.put("method", method);
            jsonRequest.put("params", jsonParams);
+           if(version==Versions.VERSION_2) {
+               jsonRequest.put("jsonrpc", "2.0");
+           }
        }
        catch (JSONException e1)
        {
@@ -101,7 +104,9 @@
            jsonRequest.put("id", UUID.randomUUID().hashCode());
            jsonRequest.put("method", method);
            jsonRequest.put("params", params);
-           jsonRequest.put("jsonrpc", "2.0");
+           if(version==Versions.VERSION_2) {
+               jsonRequest.put("jsonrpc", "2.0");
+           }
        } catch (JSONException e1) {
            throw new JSONRPCException("Invalid JSON request", e1);
        }

Original issue reported on code.google.com by [email protected] on 1 Apr 2013 at 9:08

JSONRPCClient doesn't handle parameter of type array.

What steps will reproduce the problem?
1. Call remote function with signature foo(int[] blah);

What is the expected output?:
Server should receive [1,2,55] as the param.

What do you see instead?:
Server receives "["\id98459875" which is a result of toString() on array.


What version of the product are you using?:
latest


FIX:
    protected JSONObject doRequest(String method, Object[] params)
            throws JSONRPCException, IOException {
        // Copy method arguments in a json array
        JSONArray jsonParams = new JSONArray();
        for (int i = 0; i < params.length; i++) {
            //[by gnugu]: if object is array
            // we need to add JSONArray
            if (params[i].getClass().isArray()) {
                JSONArray param = new JSONArray();
                Object arr = params[i];
                int len = Array.getLength(arr);
                for (int j = 0; j < len; j++) {
                    param.put(Array.get(arr, j));
                }
                jsonParams.put(param);
            } else {
                jsonParams.put(params[i]);
            }
        }

        // Create the json request object
        JSONObject jsonRequest = new JSONObject();
        try {
            // id hard-coded at 1 for now
            jsonRequest.put("id", 1);
            jsonRequest.put("method", method);
            jsonRequest.put("params", jsonParams);
        } catch (JSONException e1) {
            throw new JSONRPCException("Invalid JSON request", e1);
        }
        return doJSONRequest(jsonRequest);
    }

Original issue reported on code.google.com by [email protected] on 27 Oct 2010 at 10:09

Impossible to call method with a null param.

In JSONRPCClient / JSONRPCThreadedClient both methods 

protected JSONObject doRequest(String method, Object[] params)
protected static JSONArray getJSONArray(Object[] array)

use [ params[i] | item ].getClass().isArray() that leads to a null pointer 
xception when params[i] or item is null.

Original issue reported on code.google.com by [email protected] on 8 Oct 2014 at 4:08

Error In versio 3.x....

I currently use the version 2.1 of lib and i Try change to 3.x but i get the 
follow error:

09-04 20:03:23.537: E/AndroidRuntime(267): Caused by: 
java.lang.NoClassDefFoundError: org.alexd.jsonrpc.JSONRPCParams$Versions
09-04 20:03:23.537: E/AndroidRuntime(267):  at 
br.com.icarros.network.JsonRpcRequest$ManagerAsyncTask.doInBackground(JsonRpcReq
uest.java:104)
09-04 20:03:23.537: E/AndroidRuntime(267):  at 
br.com.icarros.network.JsonRpcRequest$ManagerAsyncTask.doInBackground(JsonRpcReq
uest.java:1)
09-04 20:03:23.537: E/AndroidRuntime(267):  at 
android.os.AsyncTask$2.call(AsyncTask.java:185)
09-04 20:03:23.537: E/AndroidRuntime(267):  at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-04 20:03:23.537: E/AndroidRuntime(267):  ... 4 more

Original issue reported on code.google.com by [email protected] on 4 Sep 2012 at 11:08

Throws JSON Exception if "error" parameter is not set!

In the JSONRPCHttpClient class in the doJSONRequest function an error
occurs, if the JSONRPC Server returns a result (not a error).

In the JSONRPC 2.0 Specification the "error" parameter of the response
object is omitted at succes.

Because 'jsonObject.get("error")' returns "JSONObject["error"] not found."
an exception gets thrown.

I replaced this code:

    // Check for remote errors
    Object jsonError = jsonResponse.get("error");
    if (!jsonError.equals(null)) {
        throw new JSONRPCException(jsonError);
    } else {
        return jsonResponse;
    }

with the following:

    // Check for remote errors
    if (jsonResponse.has("error")) {
        throw new JSONRPCException(jsonResponse.get("error"));
    } else {
        return jsonResponse;
    }

Original issue reported on code.google.com by [email protected] on 4 Feb 2010 at 12:41

Errors from -32000 to -32099 shoudn't result in Exception

What steps will reproduce the problem?
1. Make a callJSONObject to a WS which returns a error object like the following

{
    "error": {
        "code": -32001,
        "message": "Callback Service RPC Error code",
        "data": {}
    },
    "id": "1234",
    "jsonrpc": "2.0"
}

What is the expected output? What do you see instead?

The expected output should be a JSONObject with the code, message and data 
fields. What I see instead it´s a JSONRPCException because the result is null.

What version of the product are you using? On what operating system?

version 0.3.4

Please provide any additional information below.

The JSON-RPC Specification states that errors from -32000 to -32099 are 
reserved for implementation-defined server-errors. They shouldn't raise a 
Exception.

Original issue reported on code.google.com by [email protected] on 17 Feb 2014 at 2:02

Attachments:

Authorization

Please add authorization. Such as:

request.addHeader("Authorization", "Basic " + 
Base64Coder.encodeString((username + ":" + password)));

Original issue reported on code.google.com by [email protected] on 17 Oct 2012 at 12:52

Can not work with json-string which contains non-ascii unicode characters.

What steps will reproduce the problem?
1. new a JSONObject and put a string field
JSONObject jsonObject = new JSONObject();
jsonObject.put("string": "中文");
2. New a json rpc client:
JSONRPCClient client = ...
3. Use the jsonObject as json-rpc parameter:
client.callJSONObject("method": jsonObject);

What is the expected output? What do you see instead?

The remote side receives '????' instead of "中文"

What version of the product are you using? On what operating system?

Working with Android-7 and android-jsonrpc-0.3.1

Please provide any additional information below.

Can be fixed by changing lines in org.alexd.jsonrpc.JSONEntity:

package org.alexd.jsonrpc;

import java.io.UnsupportedEncodingException;

import org.apache.http.Header;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;

/**
 * Provides a HttpEntity for json content
 */
class JSONEntity extends StringEntity 
{
    public JSONEntity(JSONObject jsonObject) throws UnsupportedEncodingException 
    {
        super(jsonObject.toString(), "utf-8");
        setContentEncoding("utf-8");
    }

    @Override
    public Header getContentType() 
    {
        return new BasicHeader(HTTP.CONTENT_TYPE, "application/json");
    }
}

Original issue reported on code.google.com by lvqier on 26 Jun 2012 at 2:12

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.