Отправлять только определенное значение JSON в запросе POST, используя Volley в Android

Я использую в своем приложении volley. Мне нужно POST одну форму на сервер с помощью Volley. Форма содержит несколько обязательных полей. Если эти поля размещены в форме JSON, она успешно отправлена, в противном случае возникает ошибка.
Это формат json, который мне нужно отправить

{
                "email": "[email protected]",
                "address": "IUDP",
                "phone": "9898981212",
                "salutation": "Mr.",
                "firstname": "PQR",
                "lastname": "WXY",
                "city": "Pune",
                "country": "India", 
                "zip": "411006"
            }  

Электронная почта или телефон являются обязательными полями. Если доступен только адрес электронной почты или только телефон, данные должны быть POST успешно введены, и сервер не выдает ошибку. Если включены другие поля, все должно работать нормально.
Это мой json объект сообщения.

 final JSONObject jsonObject = new JSONObject();
            try {
                jsonObject.put("salutation",user_saluation);
                jsonObject.put("firstname",first_name);
                jsonObject.put("lastname",last_name);
                jsonObject.put("email",user_email);
                jsonObject.put("phone",user_phone);
                jsonObject.put("address",user_address);
                jsonObject.put("city",user_city);
                jsonObject.put("country",user_country);
                jsonObject.put("zip","411001");
            } catch (JSONException e) {
                e.printStackTrace();
            }  

это моя просьба

private void sendData() {
            String url= AppConstants.service_url+AppConstants.service_port+AppConstants.rest_service_path+"users/";

            final JSONObject jsonObject = new JSONObject();
            try {
                // JSONObject loginback=new JSONObject();

                jsonObject.put("salutation",user_saluation);
                jsonObject.put("firstname",first_name);
                jsonObject.put("lastname",last_name);
                jsonObject.put("email",user_email);
                jsonObject.put("phone",user_phone);
                jsonObject.put("address",user_address);
                jsonObject.put("city",user_city);
                jsonObject.put("country",user_country);
                jsonObject.put("zip","411001");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            JsonObjectRequest request=new JsonObjectRequest(Request.Method.POST, url,jsonObject, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {


                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
            AppController.getInstance().addToRequestQueue(request,req);

        }

    }

}

Я назвал этот метод на прослушивателе нажатия кнопки

register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             sendData();
}

Итак, как включить только обязательные поля в почтовый запрос JSON или обязательные поля с некоторыми другими полями, если они доступны?


person Satyam Gondhale    schedule 18.05.2018    source источник
comment
вы будете отправлять эти данные при нажатии любой кнопки справа. Когда вы нажимаете на эту кнопку, проверьте, заполнены ли все обязательные поля, затем выполните вызов API, в противном случае покажите ошибку   -  person Sachin    schedule 18.05.2018
comment
поделитесь своим кодом, если вам нужна дополнительная помощь.   -  person Sachin    schedule 18.05.2018
comment
Да, при нажатии кнопки я вызываю Api, но если другие поля не заполнены, как создать объект JSON   -  person Satyam Gondhale    schedule 18.05.2018
comment
Возможный дубликат Как отправить запрос POST с Тело JSON с использованием Volley?   -  person Ali    schedule 18.05.2018


Ответы (1)


Просто проверьте содержимое, если поля пусты, сделав это, вы можете проверить, является ли поле нулевым или нет, чтобы вы знали, пусто ли поле или нет.

для этого просто используйте оператор if

if(user_email==null || user_phone==null) {

Log.e("emailorphonenull,"some fields are incomplete");

}

вы можете сделать то же самое с .length() и проверить if(user_phone.length() == 0 || user_email.length() == 0)

Итак, это проверит, является ли одно из значений нулевым, это означает, что одно из них может быть пустым, но не оба из них

Не забудьте запустить эту проверку перед отправкой запроса, иначе вы увидите ошибки в onResponse();

Изменить: в вашем методе sendData() перед выполнением запроса проверьте, пусты ли значения или нет

private void sendData() {
            String url= AppConstants.service_url+AppConstants.service_port+AppConstants.rest_service_path+"users/";

            final JSONObject jsonObject = new JSONObject();
            try {
                // JSONObject loginback=new JSONObject();

                jsonObject.put("salutation",user_saluation);
                jsonObject.put("firstname",first_name);
                jsonObject.put("lastname",last_name);
                jsonObject.put("email",user_email);
                jsonObject.put("phone",user_phone);
                jsonObject.put("address",user_address);
                jsonObject.put("city",user_city);
                jsonObject.put("country",user_country);
                jsonObject.put("zip","411001");
            } catch (JSONException e) {
                e.printStackTrace();
            }

             if(user_email==null || user_phone==null) {

Toast.makeText(yourclass.this, "Some mandatory fields are empty", Toast.LENGTH_SHORT).show();

} else{


            JsonObjectRequest request=new JsonObjectRequest(Request.Method.POST, url,jsonObject, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {


                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
            AppController.getInstance().addToRequestQueue(request,req);

        }

    }

  }

}

Это должно помочь вам, поиграйте с этим, если вы проверяете значения, вы также можете использовать .length(), чтобы убедиться, что поля не пусты.

Насколько я понимаю, вам нужен хотя бы один из них для успешной отправки вашего POST-запроса, поэтому он проверит, является ли один из двух нулевым или пустым.

также, если вы используете метод sendData(), вы можете проверить значения перед выполнением метода

хорошего дня

счастливое кодирование

person Gastón Saillén    schedule 18.05.2018
comment
Можете ли вы сказать мне, как включить те поля, которые не являются нулевыми, в мой объект POST JSON. - person Satyam Gondhale; 18.05.2018
comment
можешь показать где у тебя код залпа? потому что ты не выложил это - person Gastón Saillén; 18.05.2018
comment
Итак, user_phone, user_email являются глобальными полями, и где вы вызываете метод sendData()? - person Gastón Saillén; 18.05.2018
comment
Да, это глобальные поля - person Satyam Gondhale; 18.05.2018
comment
Можете ли вы показать мне, где вы вызываете метод sendData()? - person Gastón Saillén; 18.05.2018
comment
Я назвал этот метод после нажатия кнопки. - person Satyam Gondhale; 18.05.2018