JSON Parsing GET method, trying to display values in Spinner
JSON Parsing GET method, trying to display values in Spinner
I am trying to display values in Spinner by using JSON parsing, but it's not taking the centerID and giving me error as " centerID not found". And, nothing is displaying in Spinner View.
// This is my API file
BASE_URL : http://192.168.1.80/aoplnew/api/
API URL : BASE_URL/users/getdoctorslist/$center_id
METHOD : GET
PARAMETER TO PASS:
center_id=4
INPUT:
BASE_URL/users/getdoctorslist/4
OUTPUT:
"status": true,
"result": [
"doctor_id": "1",
"first_name": "Dr. Sagar",
"last_name": "Patil"
,
"doctor_id": "2",
"first_name": "Dr. Ashwini",
"last_name": "D"
],
"message": "Get Doctors list successfully!"
Errors:
1)
"status": false,
"message": "Center id should not empty!"
2)
"status": false,
"message": "There is no Center data found!"
This is the config file where I am doing Connection
public class Config
//JSON URL
public static final String DATA_URL = "http://192.168.1.80/aoplnew/api/users/getdoctorslist/center_id";
//Tags used in the JSON String
public static final String TAG_DOC_ID = "doctor_id";
public static final String TAG_FIRST_NAME = "first_name";
public static final String TAG_LAST_NAME = "last_name";
//JSON array name
public static final String JSON_ARRAY = "result";
This is my fragment where I am trying to fetch the values in Spinner using Volley library
private ArrayList<String> docList;
//JSON Array
private JSONArray result;
private Spinner doctorLists;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_add_patient, container, false);
doctorLists = (Spinner) view.findViewById(R.id.doctors_list);
//Initializing the ArrayList
docList = new ArrayList<String>();
//This method will fetch the data from the URL
getData();
return view;
// closing onCreateView()
private void getData()
//Creating a string request
StringRequest stringRequest = new StringRequest(Request.Method.GET,Config.DATA_URL,
new Response.Listener<String>()
@Override
public void onResponse(String response)
JSONObject j = null;
try
//Parsing the fetched Json String to JSON Object
j = new JSONObject(response);
//Storing the Array of JSON String to our JSON Array
result = j.getJSONArray(Config.JSON_ARRAY);
//Calling method getStudents to get the students from the JSON Array
getDoctors(result);
catch (JSONException e)
e.printStackTrace();
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
);
//Creating a request queue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
//Adding request to the queue
requestQueue.add(stringRequest);
private void getDoctors(JSONArray j)
//Traversing through all the items in the json array
for(int i=0;i<j.length();i++)
try
//Getting json object
JSONObject json = j.getJSONObject(i);
//Adding the name of the student to array list
docList.add(json.getString(Config.TAG_FIRST_NAME));
catch (JSONException e)
e.printStackTrace();
//Setting adapter to show the items in the spinner
doctorLists.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, docList));
4 Answers
4
you are missing request method
use this
your Api need to pass center_id as parameter when its called
StringRequest stringRequest = new StringRequest(Request.Method.GET,Config.DATA_URL,
new Response.Listener<String>()
@Override
public void onResponse(String response)
JSONObject j = null;
try
//Parsing the fetched Json String to JSON Object
j = new JSONObject(response);
//Storing the Array of JSON String to our JSON Array
result = j.getJSONArray(Config.JSON_ARRAY);
//Calling method getStudents to get the students from the JSON Array
getDoctors(result);
catch (JSONException e)
e.printStackTrace();
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
) @Override
public Map<String, String> getHeaders() throws AuthFailureError
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
params.put("center_id", "4");
return params;
;
//Creating a request queue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
//Adding request to the queue
requestQueue.add(stringRequest);
if still it is not work let me know
i have edited my answer,try it.You are not passing "center_id" parameter when api called.
– pratik vekariya
Sep 13 '18 at 9:25
Or you can also try " Config.DATA_URL+YOUR CENTER_ID" in StringRequest
– pratik vekariya
Sep 13 '18 at 9:44
@Override // here im getting error public Map<String, String> getHeaders() throws AuthFailureError // at throws im getting one more error Map<String, String> params = new HashMap<String, String>(); params.put("Content-Type", "application/json"); params.put("center_id", "4"); return params; ;
– Shruti B
Sep 13 '18 at 9:51
have you checked your api url in postman? if you checked in postman then in postman you are getting correct respons?
– pratik vekariya
Sep 13 '18 at 10:25
StringRequest stringRequest = new StringRequest(Config.DATA_URL,...
You're not setting the center_id argument in your request
center_id
I'm not good at English.
I recommend use GSON for convert json string to object:
https://github.com/google/gson
and recommend use retrofit for connect to service:
https://square.github.io/retrofit/
Already you have information about your API.
API URL : BASE_URL/users/getdoctorslist/$center_id
METHOD : GET
PARAMETER TO PASS:
center_id=4
INPUT:
BASE_URL/users/getdoctorslist/4
Your API need a value $center_id but you didn't pass the value. You requested url is
$center_id
"http://192.168.1.80/aoplnew/api/users/getdoctorslist/center_id"
Please send a value of center_id.
Try this
final String url = "http://192.168.1.80/aoplnew/api/users/getdoctorslist/4";
// prepare the Request
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
try
//Parsing the fetched JSON String to JSON Object
j = new JSONObject(response);
//Storing the Array of JSON String to our JSON Array
result = j.getJSONArray(Config.JSON_ARRAY);
//Calling method getStudents to get the students from the JSON Array
getDoctors(result);
catch (JSONException e)
e.printStackTrace();
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
Log.d("Error.Response", response);
);
// add it to the RequestQueue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
//Adding request to the queue
requestQueue.add(stringRequest);
@Override // here im getting error public Map<String, String> getHeaders() throws AuthFailureError // at throws im getting one more error Map<String, String> params = new HashMap<String, String>(); params.put("Content-Type", "application/json"); params.put("center_id", "4"); return params; ;
– Shruti B
Sep 13 '18 at 9:54
@ShrutiB please check my updated answer.
– Faysal Ahmed
Sep 13 '18 at 10:17
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
i have made the changes,but still nothing is displaying in Spinner
– Shruti B
Sep 13 '18 at 9:18