使用Android中的Volley在POST请求中仅发送特定的JSON值

时间:2018-05-18 12:13:36

标签: android android-volley android-json

我在我的应用程序中使用。我需要使用Volley POST一个表格到服务器。表单包含一些必填字段。如果这些字段以JSON格式发布,则会成功提交否则会抛出错误 这是我需要发送的格式

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

电子邮件或电话是必填字段。如果只有电子邮件或只有电话可用,则数据应POST成功,服务器不会出错。如果包含其他字段,则应正常工作。
这是我的帖子对象。

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

        }

    }

}

我在Button Click Listener上调用了这个方法

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

那么如何只包含JSON post请求中的必填字段或如果可用的话还包含其他一些字段的必填字段?

1 个答案:

答案 0 :(得分:0)

如果字段为空,只需检查内容,通过执行此操作,您可以检查该字段是否为空,这样您就可以知道该字段是否为空

只需使用if 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)

所以,这将检查其中一个值是否为null,这意味着其中一个可能是空的但不是两个

请务必在发送查询之前运行此检查,因为您会在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()的地方,您可以在执行方法

之前检查值

度过美好的一天

快乐编码