POST метод для отправки строк в JsonArray - PullRequest
0 голосов
/ 15 января 2020

Я создаю приложение, в котором мне нужно отправить или отправить данные на сервер. Я могу отправить данные объекту или массиву, но я не могу отправить данные сначала в объект, а не в его подмассив, а затем в объект. Может кто-нибудь помочь мне с этой проблемой, я буду очень благодарен. Данные должны быть отправлены в форме, указанной ниже.

{
name:
no:
data: [
 {
    surname:
    option:
   another_option:
 }
]
another:
}

Я хочу разместить свои данные в строках, как это происходит в форме объекта. Я хочу обновить ArrayList в одном из объектов, но я не могу узнайте, как отправлять данные в Мои «данные:», так как я не могу узнать, как разместить мои строковые значения в списке массивов в моих параметрах. Там может быть нет. списка массивов в моих объектах ArrayList. Я не могу понять, как отправить или поместить мои данные в метод POST, пожалуйста, помогите мне

Вот мой код, который я пытаюсь.

 private void new_process() {

    String URL = "http://117.240.196.238:8080/api/raid";

    Log.i("response", URL);
    StringRequest jsonObjRequest = new StringRequest(
            Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.i("response_process", response);
            Upload_work(response);
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d("volley", "Error" + error.getMessage());
                    Log.i("response_error", error.toString());

                }
            }) {

        @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded; charset=UTF-8";
        }

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            String lic_date, lic_letter, lic_copy, sale_date, sale_letterno, sale_copy, material_name, material_quantity, quantity_in, fir_num, fir_dates, fir_policestation, sample_code, sample_date;                                       List<String> number = new ArrayList<>();

            number.add(first_text);
            number.add(second_text);
            number.add(third_text);

            params.put("name", name);
            params.put("no.", number);
            params.put("data", ?????); // how to pass my list of string number to this data
            params.put("another", another);

            return params;
        }

    };
    RequestQueue queue = SingletonRequestQueue.getInstance(getApplicationContext()).getRequestQueue();
    queue.add(jsonObjRequest);
}

private void Upload_work(String response) {
    Log.i("response_Upload_work", response);
    try {
        JSONObject json = new JSONObject(response);
        int success = json.getInt("success");
        String msg = json.getString("message");
        if (success == 1) {
            JSONObject c = json.getJSONObject("data");
            String messg = c.getString("message");
            Toast.makeText(this, messg, Toast.LENGTH_SHORT).show();


        } else {
            Toast.makeText(ScrollingActivity.this, msg, Toast.LENGTH_LONG).show();
        }
    } catch (Exception ex) {
        Log.i("responseNew m", "Exception : " + ex.toString());
    }

}

Я пытался создать JsonArray а затем создайте Jsonobject и затем передайте массив json в моих параметрах, но я не могу связать оба jsonArray с jsonobject

JsonArray sample_obj = new JsonArray();
                try {
                    JSONObject j = new JSONObject();

                    JSONObject c = new JSONObject(j.toString());

                    c.put("name", sample_code);
                    c.put("value", "google.com");

                } catch (JSONException e) {
                    e.printStackTrace();
                }

Пожалуйста, помогите мне, если я делаю это правильно или что еще я должен сделать.

Ответы [ 2 ]

1 голос
/ 15 января 2020
 JSONArray jsonArray = new JSONArray();

for(**:**:**){
    JSONObject jsOb = new JSONObject();
    jsOb.put("surname", a);
    jsOb.put("option", b);
    jsOb.put("another_option", c);
    jsonArray.put(jsOb);
}

 jQueue = Volley.newRequestQueue(getApplicationContext());

            String jurl = URL---------------------;

            final UserLocalStore userLocalStore = new UserLocalStore(getApplicationContext());


            JSONObject jsonObject= new JSONObject();
            try {

                jsonObject.put("name", x);
                jsonObject.put("no", y);

                jsonObject.put("data", jsonArray);
                jsonObject.put("another", z);
            }catch (JSONException e){
                e.printStackTrace();
            }





            //Log.d("check param",jsonObject.toString());

            final JsonObjectRequest jrequest = new JsonObjectRequest(jurl, jsonObject,
                    new Response.Listener<JSONObject>() {

                        @Override
                        public void onResponse(JSONObject response) {



                            Log.d("Volley",response.toString());
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    Log.e("**VolleyError", "error" + error.getMessage());

                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    return super.getParams();
                }

                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {


                    Map<String, String> headers = new HashMap<>();
                    CurrentUser user = userLocalStore.getLoggedInUser();


                    String credentials = user.getUsername()+":"+user.getPassword();
                    String auth = "Basic "
                            + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
                    headers.put("Content-Type", "application/json");
                    headers.put("Authorization", auth);
                    return headers;
                }
            };


            jQueue.add(jrequest);
        }


см. Пример выше

0 голосов
/ 15 января 2020

Вы должны использовать JSONArray

import org. json .JSONArray;

не JsonArray

import com.google. gson.JsonArray;

        JSONObject json2 = new JSONObject();
        JSONArray sample_obj = new JSONArray();
        try {
            json2.put("name", "name"); json2.put("no", "number");
            sample_obj.put(json2);
        } catch (JSONException e)
        { e.printStackTrace();
        }
...