Отправить только конкретное значение JSON в запросе POST, используя Volley в Android - PullRequest
0 голосов
/ 18 мая 2018

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

{
                "email": "abc@gmail.com",
                "address": "IUDP",
                "phone": "9898981212",
                "salutation": "Mr.",
                "firstname": "PQR",
                "lastname": "WXY",
                "city": "Pune",
                "country": "India", 
                "zip": "411006"
            }  

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

 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 только обязательные поляполя запроса или обязательные поля с некоторыми другими полями, если они доступны?

1 Ответ

0 голосов
/ 18 мая 2018

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

, чтобы сделать это, просто используйтеесли statment

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);

        }

    }

  }

}

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

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

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

хорошего дня

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

...