Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to send string from Android to php

Tags:

java

android

php

i was trying to create an online apps. I would like to send a string from my apps to my PHP script, but it ended up with the php doesn't receive any string from my apps, which means the PhP will echo back NULL. I have been doing research online and searching for solution, but none of them worked.

Below is my MainActivity.java code:

package my.com.tutionathome.calvinlau.testserver;

import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
    Button b;
    EditText et;
    TextView tv;
    HttpPost httppost;
    StringBuffer buffer;
    HttpResponse response;
    HttpClient httpclient;
    List<NameValuePair> nameValuePairs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b = (Button)findViewById(R.id.Button01);
        et= (EditText)findViewById(R.id.EditText01);
        tv= (TextView)findViewById(R.id.tv);

        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                final ProgressDialog p = new ProgressDialog(v.getContext()).show(v.getContext(),"Waiting for Server", "Accessing Server");
                Thread thread = new Thread()
                {
                    @Override
                    public void run() {
                        try{

                            httpclient=new DefaultHttpClient();
                            httppost= new            HttpPost("http://10.0.0.2/my_folder_inside_htdocs/connection.php"); // make sure the url is correct.
                            //add your data
                            nameValuePairs = new ArrayList<NameValuePair>(1);
                            // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
                            nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString().trim()));  // $"username" = $_POST['username'];
                            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                            //Execute HTTP Post Request
                            response=httpclient.execute(httppost);

                            ResponseHandler<String> responseHandler = new BasicResponseHandler();
                            final String response = httpclient.execute(httppost, responseHandler);
                            System.out.println("Response : " + response);
                            runOnUiThread(new Runnable() {
                                public void run() {
                                    p.dismiss();
                                    tv.setText("Response from PHP : " + response);
                                }
                            });

                        }catch(Exception e){

                            runOnUiThread(new Runnable() {
                                public void run() {
                                    p.dismiss();
                                }
                            });
                            System.out.println("Exception : " + e.getMessage());
                        }
                    }
                };

                thread.start();


            }
        });
    }
}

And my php code:

<?php
        // put your code here
        $hostname_localhost ="localhost";
    $database_localhost ="android";
    $username_localhost ="root";
    $password_localhost ="";
    $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
    or
    trigger_error(mysql_error(),E_USER_ERROR);

    mysql_select_db($database_localhost, $localhost);

    $username = $_POST['username'];
    $password = $_POST['password'];
    $query_search = "select Email, Username from tblmember where Username = '".$username."' AND Email = '".$password. "'";
    $query_exec = mysql_query($query_search) or die(mysql_error());
    $rows = mysql_num_rows($query_exec);

    if($username == NULL){
        echo "NULL";
    }else{
        echo $username; 
    }
        ?>

This is my Android Manifest :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my.com.tutionathome.calvinlau.testserver">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
like image 951
PewDieCal Avatar asked Oct 31 '22 00:10

PewDieCal


1 Answers

There are a bunch of libraries to facilitate this, saving many lines of code, i particularly suggest retrofit.

like image 198
betorcs Avatar answered Nov 15 '22 06:11

betorcs