I am trying to implement server side for android. Forthis in android i use this code:
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        // Get the deviceID
        nameValuePairs.add(new BasicNameValuePair("reg_id", val[1]));
        nameValuePairs.add(new BasicNameValuePair("App_Name",val[2]));
        nameValuePairs.add(new BasicNameValuePair("App_Version", val[3]));
Now on server side i want to access these values and store it in database. My php code:
include('connectdb.php');
$Reg_ID=$_REQUEST['reg_id'];
$App_Name=$_REQUEST['App_Name'];
$App_Version=$_REQUEST['App_Version'];
    
if($_REQUEST['reg_id']!='NULL' && $_REQUEST['App_Name']!='NULL' && $_REQUEST['App_Version']!='NULL')
{   
    mysqli_query($con,"INSERT INTO  registration (Reg_ID, APP_Name,App_Version)
    VALUES ('".$_REQUEST['reg_id']."', '".$_REQUEST['App_Name']."','".$_REQUEST['App_Version']."')");
}   
else
{
}   
mysqli_close($con);
but in php i am getting these errors:
Notice: Undefined index: reg_id in C:\xampp\htdocs\GCM\addReg.php on line 5
Notice: Undefined index: App_Name in C:\xampp\htdocs\GCM\addReg.php on line 6
Notice: Undefined index: App_Version in C:\xampp\htdocs\GCM\addReg.php on line 7
Warning: mysqli_close() expects parameter 1 to be mysqli, resource given in C:\xampp\htdocs\GCM\addReg.php on line 24
any help
EDIT
public class SendMail extends AsyncTask<String, String, String> {
    private String endResult;
    HttpResponse response;
    @Override
    protected String doInBackground(String... val) {
        String url=val[0];
        //Log.i("Url", url + "");
        //  Log.d("C2DM", "Sending registration ID to my application server");
        HttpPost post = new HttpPost(url);
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    
        nameValuePairs.add(new BasicNameValuePair("reg_id", val[1]));
        nameValuePairs.add(new BasicNameValuePair("App_Name",val[2]));
        nameValuePairs.add(new BasicNameValuePair("App_Version", val[3]));
        HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        int timeoutConnection = 30000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT) 
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 30000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        DefaultHttpClient hc = new DefaultHttpClient(httpParameters);
        ResponseHandler<String> res = new BasicResponseHandler();
        try {
            post.addHeader("Content-Type","application/x-www-form-urlencoded");
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            response = hc.execute(post);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(String result) {
        Log.i("endResult", "" + endResult);
        super.onPostExecute(result);
        publishProgress(endResult);
    }
    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
        String result = values[0];
    }
}
(timeout code based on this answer by kuester2000)
 
     
     
    