Android - Volley无法将我的Params发送到服务器

时间:2016-02-24 12:35:13

标签: android android-volley

我正在尝试使用Volley库将数据发送到服务器,但它给了我一个错误

" "

的字符0输入结束

这是我的代码

public void postPrams(View view) {
        String tag_json_obj = "json_obj_req";

        String url = "http://Urlhere.com/register.php";

        final ProgressDialog pDialog = new ProgressDialog(this);
        pDialog.setMessage("Loading...");
        pDialog.show();

        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                url, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        text.setText("done Post : "+response);
                        pDialog.hide();
                        Toast.makeText(getApplication(),"Done",Toast.LENGTH_LONG).show();

                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("erorr", "Error: " + error.getMessage());
                Toast.makeText(getApplication(),error.getMessage().toString(),Toast.LENGTH_LONG).show();
                pDialog.hide();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("first_name","Anwar");
                params.put("last_name","Samir");
                params.put("age", "1000");
                params.put("country", "egypt");
                params.put("city","le");
                params.put("street", "10sq");
                params.put("mobile_no", "0100000");
                params.put("login_name", "Asi");
                params.put("password", "123qwe");
                return params;
            }
        };

        AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
    }

请帮助我为什么会这样。

4 个答案:

答案 0 :(得分:1)

看看Volley的source

public JsonObjectRequest(int method, String url, JSONObject jsonRequest,Listener<JSONObject> listener, ErrorListener errorListener)

您在null的位置传递jsonRequest,这意味着您实际上没有通过POST请求传递任何数据。因此错误:"end of input at character 0 of。尝试将代码更改为

public void postPrams(View view) {

    String tag_json_obj = "json_obj_req";

    String url = "http://Urlhere.com/register.php";

    final ProgressDialog pDialog = new ProgressDialog(this);
    pDialog.setMessage("Loading...");
    pDialog.show();

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, getParams(),
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    text.setText("done Post : "+response);
                    pDialog.hide();
                    Toast.makeText(getApplication(),"Done",Toast.LENGTH_LONG).show();

                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d("erorr", "Error: " + error.getMessage());
            Toast.makeText(getApplication(),error.getMessage().toString(),Toast.LENGTH_LONG).show();
            pDialog.hide();
        }
    });

    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}

private JSONObject getParams(){
    JSONObject params = new JSONObject();
    params.put("first_name","Anwar");
    params.put("last_name","Samir");
    params.put("age", "1000");
    params.put("country", "egypt");
    params.put("city","le");
    params.put("street", "10sq");
    params.put("mobile_no", "0100000");
    params.put("login_name", "Asi");
    params.put("password", "123qwe");
    return params;
}

答案 1 :(得分:0)

查看请求方法。发布或获取?你回来了吗?还是空白?

在服务器端尝试对参数进行回显。

答案 2 :(得分:0)

 JSONObject params = new JSONObject();
 params.put("first_name","Anwar");
 params.put("last_name","Samir");
 params.put("age", "1000");
 params.put("country", "egypt");
 params.put("city","le");
 params.put("street", "10sq");
 params.put("mobile_no", "0100000");
 params.put("login_name", "Asi");
 params.put("password", "123qwe");

用params替换null。你不能在服务器端接收,因为你没有发送任何身体。你放置你的参数的地图是标题而不是身体。你必须发送身体

JsonObjectRequest request = newJsonObjectRequest(method,url,body,listener){
   ....headers here
};

答案 3 :(得分:0)

试试这个

public void postDataVolley(Context context,String url,JSONObject sendObj){
try {
    RequestQueue queue = Volley.newRequestQueue(context);

    JsonObjectRequest jsonObj = new JsonObjectRequest(url,sendObj, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d("Volley", "Volley JSON post" + response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Volley", "Volley JSON post" + "That didn't work!");
        }
    });

    queue.add(jsonObj);

}catch(Exception e){

}
}