Как отправить данные тела с помощью JsonObjectRequest?Библиотека Android-Volley - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь отправить данные на мой сервер.Я создаю JsonObject и передаю его как параметр при создании JsonObjectRequest.Это не дает никакой ошибки , но ничего не возвращает.Попробовал с почтальоном и работает нормально.

Это мой код:

    JSONObject jsonBody = new JSONObject();

    try {
        jsonBody.put("firstname", "asd");
        jsonBody.put("lastname", "asd");
        jsonBody.put("id", "1");
    } catch (JSONException e) {
        e.printStackTrace();
    }



    //creating a JsonObjectRequest
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showPlayersUrl,
    jsonBody, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            JSONArray players;
            try{
                players = response.getJSONArray("Players");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    requestQueue.add(jsonObjectRequest);
}

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

ок, нашел проблему.На стороне сервера я не принимал данные в формате JSON.Просто нужно было добавить это, и это работает:

$_POST = json_decode(file_get_contents('php://input'), true);
0 голосов
/ 22 декабря 2018

Попробуйте:

RequestQueue queue = Volley.newRequestQueue(this);

private void makeJsonObjReq() {
showProgressDialog();
        Map<String, String> postParam= new HashMap<String, String>();
        postParam.put("un", "xyz@gmail.com");
        postParam.put("p", "somepasswordhere");

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        Const.URL_LOGIN, new JSONObject(postParam),
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
                msgResponse.setText(response.toString());
                hideProgressDialog();
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {

    @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;
    }



};

jsonObjReq.setTag(TAG);
queue.add(jsonObjReq);



}
...