0

i am trying to do an android app to write some datas on MySQL database but it does not work i did a Java class for this and i think the problem comes from this. Here is my code :

public class BackgroundTask extends AsyncTask<String, Void, String> {

    Context ctx;

    BackgroundTask(Context ctx) {this.ctx = ctx;}

@Override
    protected String doInBackground(String... params) {
        String reg_url = "http://localhost:8080/project/register.php";
        String method = params[0];
        if (method.equals("register")) {

            String name = params[1];
            String password = params[2];
            String contact = params[3];
            String country = params[4];

            try {
                URL url = new URL(reg_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                OutputStream os = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));

                String data = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8") + "&" +
                        URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8") + "&" +
                        URLEncoder.encode("contact", "UTF-8") + "=" + URLEncoder.encode(contact, "UTF-8") + "&" +
                        URLEncoder.encode("country", "UTF-8") + "=" + URLEncoder.encode(country, "UTF-8");
                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                os.close();
                InputStream IS = httpURLConnection.getInputStream();
                IS.close();
                return "Registration success";


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return null;
    }


    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(ctx, result, Toast.LENGTH_LONG).show();

    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

}

Actually what i would like is to save name, password, contact and country in my database. The problem is this : "Registration success" is never returned it is always null. But i don't know why. When i try to compile it looks like there is no errors and i can see the app. Thank you very much for your help !

Edit : This is the register.php :

<?php

require "init.php";

$u_name=$_POST["name"];
$u_password=$_POST["password"];
$u_contact=$_POST["contact"]";
$u_country=$_POST["country"];

$sql_query="insert into users values('$u_name', '$u_password', '$u_contact', '$u_country');";

//mysqli_query($connection, $sql_query));


if(mysqli_query($connection,$sql_query))
{

//echo "data inserted";

}

else{

//echo "error";

}



?>

And also the init.php :

<?php

$db_name = "project";
$mysql_user = "root";
$server_name = "localhost";

$connection = mysqli_connect($server_name, $mysql_user, "", $db_name);

if(!$connection){

    echo "Connection not successful";
}
else{

    echo "Connection successful";
}

?>

Thank you for your help !

Fred
  • 3
  • 3
  • Your webservice/Api is correct? – Zaki Pathan Feb 15 '17 at 10:46
  • Post your `register.php` code. – Devendra Singh Feb 15 '17 at 10:47
  • I think the code is going to one of your catch Exceptions since there is nothing happening. Try to see the stack trace or create some logs. – Mike Feb 15 '17 at 10:48
  • `'$u_country');";` There seems to be a stray semicolon. – Devendra Singh Feb 15 '17 at 10:57
  • '$u_country');"; I think there is no problem in this part of the code because there is the SQL request which end by ; and then the java code which also end by ; right ? – Fred Feb 15 '17 at 11:04
  • Your problems start when you are using `localhost`, which is alias to `myself`. So when you call `localhost` on the PC, it will point to the PC. When you call it from phone, it will point on phone. http://stackoverflow.com/questions/1946193/whats-the-whole-point-of-localhost-hosts-and-ports-at-all – Vladyslav Matviienko Feb 15 '17 at 11:06
  • No because instead of localhost i put a static IP :/ – Fred Feb 15 '17 at 11:16
  • Also, when i run the app i have this : "No Network Security Config specified, using platform default" but i don't know how to solve it and if the problem comes from there ? – Fred Feb 15 '17 at 11:19
  • so how you GET your post parameters in this Api? Sorry i just got that now – Zaki Pathan Feb 15 '17 at 11:53
  • your users table fields are in same sequence which wrote above? or it is having id or something? Sequence? '$u_name', '$u_password', '$u_contact', '$u_country'? – Zaki Pathan Feb 15 '17 at 12:03
  • $u_contact=$_POST["contact"]"; here is the problem i think so brother. replace with $u_contact=$_POST["contact"]; – Zaki Pathan Feb 15 '17 at 12:06

1 Answers1

0

My class PutUtility for getData(), PostData, DeleteData(). you just need to change package name

package fourever.amaze.mics;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;


public class PutUtility {

    private Map<String, String> params = new HashMap<>();
    private static HttpURLConnection httpConnection;
    private static BufferedReader reader;
    private static String Content;
    private StringBuffer sb1;
    private StringBuffer response;

    public void setParams(Map<String, String> params) {
        this.params = params;
    }

    public void setParam(String key, String value) {
        params.put(key, value);
    }

    public String getData(String Url) {


        StringBuilder sb = new StringBuilder();

        try {
            // Defined URL  where to send data

            URL url = new URL(Url);

            URLConnection conn = null;
            conn = url.openConnection();

            // Send POST data request
            httpConnection = (HttpURLConnection) conn;
            httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpConnection.setRequestMethod("GET");

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(httpConnection.getInputStream()));
            String inputLine;
            response = new StringBuffer();



            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (Exception ex) { }
        }

        return response.toString();
    }


    public String postData(String Url) {


        StringBuilder sb = new StringBuilder();
        for (String key : params.keySet()) {
            String value = null;
            value = params.get(key);


            if (sb.length() > 0) {
                sb.append("&");
            }
            sb.append(key + "=" + value);
        }

        try {
            // Defined URL  where to send data

            URL url = new URL(Url);

            URLConnection conn = null;
            conn = url.openConnection();

            // Send POST data request
            httpConnection = (HttpURLConnection) conn;
            httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpConnection.setRequestMethod("POST");
            httpConnection.setDoInput(true);
            httpConnection.setDoOutput(true);
            OutputStreamWriter wr = null;

            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(sb.toString());
            wr.flush();

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(httpConnection.getInputStream()));
            String inputLine;
            response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {

                reader.close();
            } catch (Exception ex) {
            }
        }


        return response.toString();
    }


    public String putData(String Url) {


        StringBuilder sb = new StringBuilder();
        for (String key : params.keySet()) {
            String value = null;
            try {
                value = URLEncoder.encode(params.get(key), "UTF-8");
                if (value.contains("+"))
                    value = value.replace("+", "%20");

                //return sb.toString();


                // Get the server response

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

            if (sb.length() > 0) {
                sb.append("&");
            }
            sb.append(key + "=" + value);
        }

        try {
            // Defined URL  where to send data

            URL url = new URL(Url);

            URLConnection conn = null;
            conn = url.openConnection();

            // Send PUT data request
            httpConnection = (HttpURLConnection) conn;
            httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpConnection.setRequestMethod("PUT");
            httpConnection.setDoInput(true);
            httpConnection.setDoOutput(false);
            OutputStreamWriter wr = null;

            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(sb.toString());
            wr.flush();

            reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            ;
            String line = null;

            // Read Server Response
            while ((line = reader.readLine()) != null) {
                // Append server response in string
                sb1.append(line + " ");
            }

            // Append Server Response To Content String
            Content = sb.toString();


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {

                reader.close();
            } catch (Exception ex) {
            }
        }
        // Send PUT data request
        return Url;

    }


    public String deleteData(String Url) {


        StringBuilder sb = new StringBuilder();
        for (String key : params.keySet()) {

            try {
                // Defined URL  where to send data

                URL url = new URL(Url);

                URLConnection conn = null;
                conn = url.openConnection();

                // Send POST data request
                httpConnection = (HttpURLConnection) conn;
                httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                httpConnection.setRequestMethod("DELETE");
                httpConnection.connect();


                reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

                String line = null;

                // Read Server Response
                while ((line = reader.readLine()) != null) {
                    // Append server response in string
                    sb1.append(line + " ");
                }

                // Append Server Response To Content String
                Content = sb.toString();


            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {

                    reader.close();
                } catch (Exception ex) {
                }
            }



        }
        return Url;

    }
}

And use this class like this

 @Override
        protected String doInBackground(String... params) {

            res = null;
            PutUtility put = new PutUtility();

            put.setParam("ueid", params[0]);
            put.setParam("firm_no", params[1]);
            put.setParam("date_incorporation", params[2]);
            put.setParam("business_name", params[3]);
            put.setParam("block_no", params[4]);

            try {

                    res = put.postData(
                            "Api URL here");

                Log.v("res", res);
            } catch (Exception objEx) {
                objEx.printStackTrace();
            }

            return res;
        }


@Override
        protected void onPostExecute(String res) {

            try {

            } catch (Exception objEx) {
                mProgressDialog.dismiss();
                objEx.printStackTrace();
            }
        }

Please use this. Hope it helps you in future also. Check this if this is the problem

$u_contact=$_POST["contact"]"

here is the problem i think so brother. replace with

$u_contact=$_POST["contact"];
Zaki Pathan
  • 1,762
  • 1
  • 13
  • 26