How to Send Employee Information to the Local Server in Android

Introduction

 
This article explains how to send employee information to the local server in Android.
 
This application will show you how to send information to the server in Android. First you need a local server; I used WampServer. You can use Wamp or Xamp, whatever you like to use. I have posted an article on how to set up a WampServer on your Desktop.
 
Here I will show you how to create a database in WampServer.
 
Step 1
 
Open Wampserver on your browser by writing localhost or localhost:8080. In your browser, a page will be displayed.
 
WampServerPage
 
Step 2
 
Click on "PhPmyadmin" on the left side.
 
PhPmyadmin
 
Step 3
 
Click the Databases on the top of the page.
 
ClickDatabase
 
Step 4
 
Click on the SQL on the right side of Databases.
 
ClickSql
 
Step 5
 
Here you will create the database by writing a SQL query and click on the "Go" button. Your database will be created and you can see your database name on the left side of the page.
 
CreateDatabase
 
Step 6
 
Now click on your database name; another page will be shown. Now again click SQL and write a query to create a table in your database.
 
CreateTable
 
Now for the coding part.
 
Step 7
 
Create PHP files to connect with the server.
 
db_connect.php
  1.  <?php  
  2. /** 
  3.  * A class file to connect to database 
  4.  */  
  5. class DB_CONNECT  
  6. {  
  7.     // constructor  
  8.     function __construct()  
  9.     {  
  10.         // connecting to database  
  11.         $this->connect();  
  12.     }  
  13.     // destructor  
  14.     function __destruct()  
  15.     {  
  16.         // closing db connection  
  17.         $this->close();  
  18.     }  
  19.     /** 
  20.      * Function to connect with database 
  21.      */  
  22.     function connect()  
  23.     {  
  24.         // import database connection variables  
  25.         require_once __DIR__ . '/db_config.php';  
  26.         // Connecting to mysql database  
  27.         $con = mysql_connect(DB_SERVER, DB_USER, DB_WORD) or die(mysql_error());  
  28.         // Selecing database  
  29.         $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());  
  30.         // returing connection cursor  
  31.         return $con;  
  32.     }  
  33.     /** 
  34.      * Function to close db connection 
  35.      */  
  36.     function close()  
  37.     {  
  38.         // closing db connection  
  39.         mysql_close();  
  40.     }  
  41. }  
  42. ?>
db_config.php
  1. <?php  
  2.   
  3. /* 
  4.  * All database connection variables 
  5.  */  
  6.   
  7. define('DB_USER'"root"); // db user  
  8. define('DB_WORD'""); // db word (mention your db word here)  
  9. define('DB_DATABASE'"employee"); // database name  
  10. define('DB_SERVER'"localhost"); // db server  
  11. ?>
Create a PHP file to store information on the server.
  1.  <?php  
  2.   
  3. /* 
  4.  * Following code will create a new product row 
  5.  * All product details are read from HTTP Post Request 
  6.  */  
  7.   
  8. // array for JSON response  
  9. $response = array();  
  10.   
  11. // check for required fields  
  12. if (isset($_POST['id']) && isset($_POST['name'])) {  
  13.       
  14.     $id   = $_POST['id'];  
  15.     $name = $_POST['name'];  
  16.       
  17.     // include db connect class  
  18.     require_once __DIR__ . '/db_connect.php';  
  19.       
  20.     // connecting to db  
  21.     $db = new DB_CONNECT();  
  22.       
  23.     // mysql inserting a new row  
  24.     $result = mysql_query("INSERT INTO employe_data(id, name) VALUES('$id', '$name')");  
  25.       
  26.     // check if row inserted or not  
  27.     if ($result) {  
  28.         // successfully inserted into database  
  29.         $response["success"] = 1;  
  30.         $response["message"] = "Product successfully created.";  
  31.           
  32.         // echoing JSON response  
  33.         echo json_encode($response);  
  34.     } else {  
  35.         // failed to insert row  
  36.         $response["success"] = 0;  
  37.         $response["message"] = "Oops! An error occurred.";  
  38.           
  39.         // echoing JSON response  
  40.         echo json_encode($response);  
  41.     }  
  42. else {  
  43.     // required field is missing  
  44.     $response["success"] = 0;  
  45.     $response["message"] = "Required field(s) is missing";  
  46.       
  47.     // echoing JSON response  
  48.     echo json_encode($response);  
  49. }  
  50. ?>  
Step 8
 
Create an XML file and write this. In this XML file, you will use two text views, two edittexts, and a button.
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.    
  7.     <!-- Name Label -->  
  8.     <TextView android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="Employee_Id"  
  11.         android:paddingLeft="10dip"  
  12.         android:paddingRight="10dip"  
  13.         android:paddingTop="10dip"  
  14.         android:textSize="17dip"/>  
  15.    
  16.     <!-- Input Name -->  
  17.     <EditText android:id="@+id/inputId"  
  18.         android:layout_width="fill_parent"  
  19.         android:layout_height="wrap_content"  
  20.         android:layout_margin="5dip"  
  21.         android:layout_marginBottom="15dip"  
  22.         android:singleLine="true"/>  
  23.    
  24.     <!-- Price Label -->  
  25.     <TextView android:layout_width="fill_parent"  
  26.         android:layout_height="wrap_content"  
  27.         android:text="Employee_Name"  
  28.         android:paddingLeft="10dip"  
  29.         android:paddingRight="10dip"  
  30.         android:paddingTop="10dip"  
  31.         android:textSize="17dip"/>  
  32.    
  33.     <!-- Input Price -->  
  34.     <EditText android:id="@+id/inputName"  
  35.         android:layout_width="fill_parent"  
  36.         android:layout_height="wrap_content"  
  37.         android:layout_margin="5dip"  
  38.         android:layout_marginBottom="15dip"  
  39.         android:singleLine="true"  
  40.        />  
  41.    
  42.     <!-- Description Label -->  
  43.     
  44.     
  45.     <!-- Button Create Product -->  
  46.     <Button android:id="@+id/btnCreateProduct"  
  47.         android:layout_width="fill_parent"  
  48.         android:layout_height="wrap_content"  
  49.         android:text="Create "/>  
  50.    
  51. </LinearLayout> 
Step 9
 
Create a Java class file MainActivity with the following:
  1. package com.example.adddatatotheserver;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. import org.apache.http.NameValuePair;  
  8. import org.apache.http.message.BasicNameValuePair;  
  9. import org.json.JSONArray;  
  10. import org.json.JSONException;  
  11. import org.json.JSONObject;  
  12.   
  13. import android.app.Activity;  
  14. import android.app.ListActivity;  
  15. import android.app.ProgressDialog;  
  16. import android.content.Intent;  
  17. import android.os.AsyncTask;  
  18. import android.os.Bundle;  
  19. import android.util.Log;  
  20. import android.view.View;  
  21. import android.view.View.OnClickListener;  
  22. import android.view.inputmethod.EditorInfo;  
  23. import android.widget.AdapterView;  
  24. import android.widget.AdapterView.OnItemClickListener;  
  25. import android.widget.Button;  
  26. import android.widget.EditText;  
  27. import android.widget.ListAdapter;  
  28. import android.widget.ListView;  
  29. import android.widget.SimpleAdapter;  
  30. import android.widget.TextView;  
  31.   
  32. public class MainActivity extends Activity   
  33. {  
  34.   
  35.  // Progress Dialog  
  36.  private ProgressDialog pDialog;  
  37.   
  38.  // Create the object of JsonParser class  
  39.  JSONParser jParser = new JSONParser();  
  40.   
  41.  EditText inputName;  
  42.  EditText inputId;  
  43.   
  44.  // url to create send data. This contains the ip address of my machine on which the local server is running. You will write the IP address of your machine  
  45.  private static String url = "http://192.168.1.135:8080/connect_php/create_product.php";  
  46.   
  47.  // JSON Node names  
  48.  private static final String TAG_SUCCESS = "success";  
  49.   
  50.  @Override  
  51.  public void onCreate(Bundle savedInstanceState)   
  52.  {  
  53.   super.onCreate(savedInstanceState);  
  54.   setContentView(R.layout.activity_main);  
  55.   
  56.   // Edit Text  
  57.   inputName = (EditText) findViewById(R.id.inputName);  
  58.   inputId = (EditText) findViewById(R.id.inputId);  
  59.   
  60.   // Create button  
  61.   Button btnCreateProduct = (Button) findViewById(R.id.btnSend);  
  62.   
  63.   // button click event  
  64.   btnCreateProduct.setOnClickListener(new View.OnClickListener()   
  65.   {  
  66.   
  67.   
  68.    /*on button click you will call the execute() method with the object of CreateNewId class and onPreExecute() will be called where we start the progress dialogue. After the execution of 
  69.      onPreExecute(), doInBackGround method will be called automatically which sends the data to the JsonParser class. In JsonParser class I have created the Http Client to send the   data to the server.     */  
  70.    @Override  
  71.    public void onClick(View view)   
  72.    {  
  73.     // creating new product in background thread  
  74.     new CreateNewId().execute();  
  75.    }  
  76.   });  
  77.  }  
  78.   
  79.  /** 
  80.   * Background Async Task to Create new product 
  81.   * */  
  82.  class CreateNewId extends AsyncTask < String, String, String >  
  83.  {  
  84.   
  85.   /** 
  86.    * Before starting background thread Show Progress Dialog 
  87.    * */  
  88.   @SuppressWarnings("unused")  
  89.   @Override  
  90.   protected void onPreExecute()   
  91.   {  
  92.    super.onPreExecute();  
  93.    pDialog = new ProgressDialog(MainActivity.this);  
  94.    pDialog.setMessage("Creating Data..");  
  95.    pDialog.setIndeterminate(false);  
  96.    pDialog.setCancelable(true);  
  97.    pDialog.show();  
  98.   }  
  99.   
  100.   /** 
  101.    * Creating product 
  102.    * */  
  103.   protected String doInBackground(String...args)   
  104.   {  
  105.    String name = inputName.getText().toString();  
  106.    String id = inputId.getText().toString();  
  107.   
  108.    // Building Parameters  
  109.    List < NameValuePair > params = new ArrayList < NameValuePair > ();  
  110.    params.add(new BasicNameValuePair("name", name));  
  111.    params.add(new BasicNameValuePair("id", id));  
  112.   
  113.    // getting JSON Object  
  114.    // Note that create product url accepts POST method  
  115.    JSONObject json = jParser.makeHttpRequest(url,  
  116.     "POST", params);  
  117.   
  118.    // check log cat fro response  
  119.    Log.d("Create Response", json.toString());  
  120.   
  121.    // check for success tag  
  122.    try   
  123.    {  
  124.     int success = json.getInt(TAG_SUCCESS);  
  125.   
  126.     if (success == 1)   
  127.     {  
  128.      // successfully created product  
  129.      // Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);  
  130.      //startActivity(i);  
  131.      finish();  
  132.      // closing this screen  
  133.   
  134.     }   
  135.     else   
  136.     {  
  137.      // failed to create product  
  138.     }  
  139.    }   
  140.    catch (JSONException e)   
  141.    {  
  142.     e.printStackTrace();  
  143.    }  
  144.   
  145.    return null;  
  146.   }  
  147.   
  148.   /** 
  149.    * After completing background task Dismiss the progress dialog 
  150.    * **/  
  151.   protected void onPostExecute(String file_url)   
  152.   {  
  153.    // dismiss the dialog once done  
  154.    pDialog.dismiss();  
  155.   }  
  156.   
  157.  }  
Step 10
 
Create another Java class file JsonParser with the following:
  1. package com.example.adddatatotheserver;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.UnsupportedEncodingException;  
  8. import java.util.List;  
  9.   
  10. import org.apache.http.HttpEntity;  
  11. import org.apache.http.HttpResponse;  
  12. import org.apache.http.NameValuePair;  
  13. import org.apache.http.client.ClientProtocolException;  
  14. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  15. import org.apache.http.client.methods.HttpGet;  
  16. import org.apache.http.client.methods.HttpPost;  
  17. import org.apache.http.client.utils.URLEncodedUtils;  
  18. import org.apache.http.impl.client.DefaultHttpClient;  
  19. import org.json.JSONException;  
  20. import org.json.JSONObject;  
  21.   
  22. import android.util.Log;  
  23.   
  24. public class JSONParser   
  25. {  
  26.   
  27.  static InputStream inputStream = null;  
  28.  static JSONObject jObject = null;  
  29.  static String jsonString = "";  
  30.   
  31.  // constructor  
  32.  public JSONParser()   
  33.  {  
  34.   
  35.  }  
  36.   
  37.  // function get json from url  
  38.  // by making HTTP POST or GET mehtod  
  39.  public JSONObject makeHttpRequest(String url, String method, List < NameValuePair > params)  
  40.   {  
  41.   
  42.   // Making HTTP request  
  43.   try  
  44.   {  
  45.   
  46.    // check for request method  
  47.    if (method == "POST")   
  48.    {  
  49.     // request method is POST  
  50.     // defaultHttpClient  
  51.     DefaultHttpClient client = new DefaultHttpClient();  
  52.     HttpPost post = new HttpPost(url);  
  53.     post.setEntity(new UrlEncodedFormEntity(params));  
  54.   
  55.     HttpResponse httpResponse = client.execute(post);  
  56.     HttpEntity entity = httpResponse.getEntity();  
  57.     inputStream = entity.getContent();  
  58.   
  59.    }   
  60.    else if (method == "GET")   
  61.    {  
  62.     // request method is GET  
  63.     DefaultHttpClient httpClient = new DefaultHttpClient();  
  64.     String paramString = URLEncodedUtils.format(params, "utf-8");  
  65.     url += "?" + paramString;  
  66.     HttpGet httpGet = new HttpGet(url);  
  67.   
  68.     HttpResponse httpResponse = httpClient.execute(httpGet);  
  69.     HttpEntity httpEntity = httpResponse.getEntity();  
  70.     inputStream = httpEntity.getContent();  
  71.    }  
  72.   
  73.   }  
  74.   catch (UnsupportedEncodingException e)  
  75.   {  
  76.    e.printStackTrace();  
  77.   }   
  78.   catch (ClientProtocolException e)   
  79.   {  
  80.    e.printStackTrace();  
  81.   }  
  82.   catch (IOException e)   
  83.   {  
  84.    e.printStackTrace();  
  85.   }  
  86.   
  87.   try   
  88.   {  
  89.    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(  
  90.     inputStream, "iso-8859-1"), 8);  
  91.    StringBuilder stringBuilder = new StringBuilder();  
  92.    String line = null;  
  93.    while ((line = bufferedReader.readLine()) != null)   
  94.    {  
  95.     stringBuilder.append(line + "\n");  
  96.    }  
  97.    inputStream.close();  
  98.    jsonString = stringBuilder.toString();  
  99.   }   
  100.   catch (Exception e)   
  101.   {  
  102.    Log.e("Buffer Error""Error converting result " + e.toString());  
  103.   }  
  104.   Log.d("debug""string: " + jsonString);  
  105.   
  106.   // try parse the string to a JSON object  
  107.   try   
  108.   {  
  109.    jObject = new JSONObject(jsonString);  
  110.   }   
  111.   catch (JSONException e)   
  112.   {  
  113.    Log.e("JSON Parser""Error parsing data " + e.toString());  
  114.   }  
  115.   
  116.   // return JSON String  
  117.   return jObject;  
  118.   
  119.  }  
Step 11
 
Android Manifest.Xml file
 
In the Android Manifest.xml file give the internet permission as in the following:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.   package="com.example.adddatatotheserver"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.     <uses-sdk  
  7.         android:minSdkVersion="8"  
  8.         android:targetSdkVersion="18" />  
  9.     <application  
  10.         android:allowBackup="true"  
  11.         android:icon="@drawable/ic_launcher"  
  12.         android:label="@string/app_name"  
  13.         android:theme="@style/AppTheme" >  
  14.         <activity  
  15.             android:name="com.example.adddatatotheserver.MainActivity"  
  16.             android:label="@string/app_name" >  
  17.             <intent-filter>  
  18.                 <action android:name="android.intent.action.MAIN" />  
  19.                 <category android:name="android.intent.category.LAUNCHER" />  
  20.             </intent-filter>  
  21.         </activity>  
  22.     </application>  
  23.       <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  24.       <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  25. </manifest> 
Step 12
 
Enter data to send
 
SendData
 
Progress
 
ShowProgress
 
Data on the Server