javaandroidandroid-volleyjsonobjectrequest

Having trouble while consuming PHP Api via Volley library Android


I am able to consume api via volley library which use normal get post method but my php team just changed my api which accept json . i know there is is JsonObjectrequest in volley but i don't know how to put parameters in `JsonObjectRequest. Any help is appriciated.

PHP API

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){
$data_back = json_decode(file_get_contents('php://input'));
header("Content-type: application/json");
require "conn.php";
$id = $data_back->{"id"};
$address = $data_back->{"address"};
$pincode = $data_back->{"pincode"};
$name = $data_back->{"name"};
$mobile = $data_back->{"mobile"};

$sql = "UPDATE tbl_addressbook SET name = '$name', address = '$address', pincode = '$pincode', mobile = '$mobile' WHERE  id = $id";

if(mysqli_query($conn,$sql)){
    echo 'Address Book Updated Successfully';
}
else{
   echo 'Could Not Update Your Address Book';
  }
}
?> 

Volley Request

StringRequest stringRequest=new StringRequest(Request.Method.POST, Config.UPDATE_ADDRESS_BOOK,
                                new Response.Listener<String>() {
                                    @Override
                                    public void onResponse(String response) {
                                        Toast.makeText(mContext,"Address Changed",Toast.LENGTH_LONG).show();
                                        list.set(getAdapterPosition(),new AddressBookModel(bookModel.getId(),
                                                etName.getText().toString(),
                                                etAddress.getText().toString(),
                                                etPinCode.getText().toString(),
                                                etPhone.getText().toString(),
                                                bookModel.getDefAddress()));
                                        d.dismiss();
                                        progress.dismiss();
                                        ((Activity)mContext).runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                notifyDataSetChanged();
                                            }
                                        });
                                    }
                                }, new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Toast.makeText(mContext,"Something Went Wrong \n ttry again later",Toast.LENGTH_LONG).show();
                            }
                        }){
                            @Override
                            protected Map<String, String> getParams() throws AuthFailureError {
                                Map<String, String> map=new HashMap<String, String>();
                                map.put("id",bookModel.getId());
                                map.put("name",etName.getText().toString());
                                map.put("address",etAddress.getText().toString());
                                map.put("pincode",etPinCode.getText().toString());
                                map.put("phone",etPhone.getText().toString());
                                return checkParams(map);
                            }
                            private Map<String, String> checkParams(Map<String, String> map){
                                Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
                                while (it.hasNext()) {
                                    Map.Entry<String, String> pairs = (Map.Entry<String, String>)it.next();
                                    if(pairs.getValue()==null){
                                        map.put(pairs.getKey(), "");
                                    }
                                }
                                return map;
                            }
                        };
                        VolleySingleton.getInstance(mContext).addToRequestQueue(stringRequest);

Solution

  • Easy cheesy lemon squeezy!

    Some code

    HashMap<String, String> params = new HashMap<String, String>();
    params.put("id", "300");
    params.put("address", "Mars");
    params.put("pincode", "***");
    params.put("name", "Jon Skeet");
    params.put("mobile", "911");
    JsonObjectRequest request = new JsonObjectRequest(
                                /*URL*/, 
                                new JSONObject(params),
                                new Response.Listener<JSONObject>(){/*...*/});