how to get json data from php server to android mobile

25,316

Solution 1

First do URL Connection

String parsedString = "";

    try {

        URL url = new URL(yourURL);
        URLConnection conn = url.openConnection();

        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestMethod("GET");
        httpConn.connect();

        InputStream is = httpConn.getInputStream();
        parsedString = convertinputStreamToString(is);

    } catch (Exception e) {
        e.printStackTrace();
    }

JSON String

{
"result": "success",
"countryCodeList":
[
  {"countryCode":"00","countryName":"World Wide"},
  {"countryCode":"kr","countryName":"Korea"}
] 
}

Here below I am fetching country details

JSONObject json = new JSONObject(jsonstring);
JSONArray nameArray = json.names();
JSONArray valArray = json.toJSONArray(nameArray);

JSONArray valArray1 = valArray.getJSONArray(1);

valArray1.toString().replace("[", "");
valArray1.toString().replace("]", "");

int len = valArray1.length();

for (int i = 0; i < valArray1.length(); i++) {

 Country country = new Country();
 JSONObject arr = valArray1.getJSONObject(i);
 country.setCountryCode(arr.getString("countryCode"));                        
 country.setCountryName(arr.getString("countryName"));
 arrCountries.add(country);
}




public static String convertinputStreamToString(InputStream ists)
        throws IOException {
    if (ists != null) {
        StringBuilder sb = new StringBuilder();
        String line;

        try {
            BufferedReader r1 = new BufferedReader(new InputStreamReader(
                    ists, "UTF-8"));
            while ((line = r1.readLine()) != null) {
                sb.append(line).append("\n");
            }
        } finally {
            ists.close();
        }
        return sb.toString();
    } else {
        return "";
    }
}

Solution 2

  String jsonStr = '{"menu": {' + 
        '"id": "file",' + 
        '"value": "File",' + 
        '"popup": {' + 
          '"menuitem": [' + 
            '{"value": "New", "onclick": "CreateNewDoc()"},' + 
            '{"value": "Open", "onclick": "OpenDoc()"},' + 
            '{"value": "Close", "onclick": "CloseDoc()"}' + 
          ']' + 
        '}' + 
      '}}'; 

That JSON string is actually from http://json.org/example.html. It was the best one I could find for this given example.

Now that we have that in place, lets start using JSONObject. You will need the following import for this to work: import org.json.JSONObject;

JSONObject jsonObj = new JSONObject(jsonStr); 

With that instantiated, we can do the following to retreive different pieces of data from the JSON string -

  // grabbing the menu object 
 JSONObject menu = jsonObj.getJSONObject("menu"); 


Reading  =========>  HttpResponse response = httpclient.execute(httppost); 
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) 
                {
                    sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();=======>Here result is the json string


 // these 2 are strings 
 String id = menu.getString("id"); 
 String value = menu.getString("value"); 

 // the popop is another JSON object 
 JSONObject popup = menu.getJSONObject("popup"); 

 // using JSONArray to grab the menuitems from under popop 
  JSONArray menuitemArr = popupObject.getJSONArray("menuitem");  

 // lets loop through the JSONArray and get all the items 
 for (int i = 0; i < menuitemArr.length(); i++) { 
// printing the values to the logcat 
Log.v(menuitemArr.getJSONObject(i).getString("value").toString()); 
Log.v(menuitemArr.getJSONObject(i).getString("onclick").toString()); 
}

For a easy Example click here

Solution 3

send a Request from your Android client

public static JSONObject getJSONFromHttpPost(String URL) {

    try{
    // Create a new HttpClient and Post Header
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(URL);
    String resultString = null;




        long t = System.currentTimeMillis();
        HttpResponse response = (HttpResponse) httpclient.execute(httpPost);
        System.out.println("HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]");
        // Get hold of the response entity (-> the data):
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            // Read the content stream
            InputStream instream = entity.getContent();

            // convert content stream to a String
            resultString= convertStreamToString(instream);
            instream.close();
            System.out.println("result String : " + resultString);
            //resultString = resultString.substring(1,resultString.length()-1); // remove wrapping "[" and "]"
            System.out.println("result String : " + resultString);
            // Transform the String into a JSONObject
            JSONObject jsonObjRecv = new JSONObject(resultString);
            // Raw DEBUG output of our received JSON object:
            System.out.println("<JSONObject>\n"+jsonObjRecv.toString()+"\n</JSONObject>");


            return jsonObjRecv;
        }
        }catch(Exception e){e.printStackTrace();}


        return null;

}

here is the function to convert the string

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line ="";
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

now all you have to do is echo your string in JSON format on the server

Share:
25,316
Jagdeep Singh
Author by

Jagdeep Singh

Hi, I am a Android and game Developer.

Updated on January 10, 2020

Comments

  • Jagdeep Singh
    Jagdeep Singh over 4 years

    I am having an application in which I want to get json data from a php web server to android mobile. What I am having is a URL and hitting that URL gives me the json data like
    {"items":[{"latitude":"420","longitude":"421"}]}. But I want to retrieve this json format in my android mobile and get the values of latitude and longitude from json format.

    How can we get that on android mobile..?

    Thanks in advance..