我在我的应用程序中使用volley。我需要使用Volley POST
一个表格到服务器。表单包含一些必填字段。如果这些字段以JSON格式发布,则会成功提交否则会抛出错误
这是我需要发送的json格式
{
"email": "abc@gmail.com",
"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);
}
}
}
我在Button Click Listener上调用了这个方法
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendData();
}
那么如何只包含JSON post请求中的必填字段或如果可用的话还包含其他一些字段的必填字段?
答案 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()
的地方,您可以在执行方法
度过美好的一天
快乐编码