Volley post请求中的JSON格式无效

时间:2016-10-26 20:36:48

标签: java android json post android-volley

我想传递

 data={"process" : "ExampleProcess", "phone" : "123456"}

作为凌空中的帖子请求,到目前为止,我已经设法创建了一个(非常基本的)方法 所需的信息输出到服务器,但我的响应失败。

我将日志添加到我可以看到的程序

ERROR :: com.android.volley.ParseError:org.json.JSONException:

的字符2处的输入结束

但我认为这与我试图发送信息的方式有关。经过调试,我也意识到我收到错误指示

方法抛出'java.lang.NullPointerException'异常。无法评估org.json.JSONObject.toString();

我不知道该做什么,即使我改变了:

        total.put("data", data.toString());

        total.put("data", data);

错误将持续存在。在这一点上,我不知道如何向我的URL发送正确的JSON帖子请求(已从示例btw中取出)

public void volleyConnector(String url) {
        final JSONObject data = new JSONObject();
        final JSONObject total = new JSONObject();


        try {

            data.put("process", "ExampleProcess");
            data.put("phone"  , "123456789");
            total.put("data", data.toString());

        } catch(JSONException e) {

            Log.v("JSON ERROR: ", e.toString());
        }


         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( url, total, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.v("--------------","---------------------------");
                Log.v("RESPONSE: ", "-----> " + response.toString());
                Log.v("<----- BTW------>", total.toString());
                Log.v("--------------","---------------------------");

            }
        }, new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.v("--------------","---------------------------");
                Log.v("RESPONSE: " , "xXxX FAIL X_____X FAIL XxXx");
                Log.v("|>>>ERROR:    ", error.toString());
                //Log.v("|>>>ERROR:    ", error.getLocalizedMessage());
                Log.v("<----- BTW------>", total.toString());

                Log.v("--------------","---------------------------");


            } // end of onErrorREsponse
        }){
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    HashMap<String, String> headers = new HashMap<String, String>();
                    headers.put("Content-Type", "application/json; charset=utf-8");
                    return headers;
                }

        };
        Volley.newRequestQueue(this).add(jsonObjectRequest);
    } // end of volley connector method

我的完整错误日志(在失败请求时)显示:

V/RESPONSE:: xXxX FAIL X_____X FAIL XxXx
V/|>>>ERROR:: com.android.volley.ParseError: org.json.JSONException: End of i 
V/<----- BTW------>: {"data":"{\"process\":\"ExampleProcess\",\"phone\":\"123456789\"}"}

我不太确定发生了什么,我不会通过阅读文档和使用Android工作室进行调试来实现目标。就我而言,其中一个参数是JSONObject,虽然它可能是错误格式化的,但我传入了一个参数。

非常感谢任何帮助/指示。

1 个答案:

答案 0 :(得分:6)

您做得正确,但在代码中进行一次小改动即尝试代码 -

JSONObject data= new JSONObject();

            data.accumulate("username", "mobileGps");
            data.accumulate("password", "9565551236");

            JSONObject total= new JSONObject();
            total.put("data",data);

            json = jsonObjectNew.toString(); 

通过这个&#34; json&#34;方法和检查一次。看起来一样,但尝试一次。