Android,Getting data from server

package com.Valluru;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.content.Intent;
import android.net.ParseException;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Food extends ListActivity {
    String result = null;
    InputStream is = null;
    StringBuilder sb=null;
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    ListView list1;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        list1 = (ListView) findViewById(android.R.id.list);

        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/atm.php");
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
        }
   
        //convert response to string
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";
        
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
           
            is.close();
            result=sb.toString();
           
        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }

        //paring data
        String fd_id;
        String fd_name;
        try{
          JSONArray jArray = new JSONArray(result);
          JSONObject json_data=null;
         
          for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);
                fd_id =json_data.getString("ATM_ID");
               
                fd_name = json_data.getString("ATM_NAME");
                nameValuePairs.add(new list<String, String>(fd_id, fd_name));
          }
         
          list1.setAdapter(new ArrayAdapter<NameValuePair>(getApplicationContext(),android.R.layout.simple_expandable_list_item_1,nameValuePairs));
         
        }catch(JSONException e1){
            Toast.makeText(getBaseContext(), "No ATM Found", Toast.LENGTH_LONG).show();
        }catch (ParseException e1){
            e1.printStackTrace();
        }
    }
}




//list.java

package com.Valluru;

import org.apache.http.NameValuePair;

import android.R.integer;

public class list<T,V> implements NameValuePair {
    T data;
    V text;
   
    public list(T data, V text)
    {
        this.data = data;
        this.text = text;
    }
   
    @Override
    public String toString(){
        return text.toString();
    }

    @Override
    public String getName() {
        return (String) data;
    }

    @Override
    public String getValue() {
        return (String) text;
    }
   
   

}


// PHP code

<?php
  mysql_connect("localhost","root");
  mysql_select_db("FOOD");
  $sql=mysql_query("select * from FOOD where FOOD_NAME like '%'");
  while($row=mysql_fetch_assoc($sql)) $output[]=$row;
  print(json_encode($output));
  mysql_close();
?>

3 comments:

  1. This code is the best example for CLIENT-SERVER communication between Android mobile and server

    ReplyDelete
    Replies
    1. Hi,

      What is the best way to secure the http://10.0.2.2/atm.php link that exposes our DB.

      I am in a twist to understand how to secure this call, as atm.php has my credentials to the DB.

      Delete
    2. You need some sort of jdbc odbc connection to database server, this way you can mask IP address details etc, for syntax you have to find it.

      Delete