Sending a response from PHP to an Android/Java mobile app?

11,609

Solution 1

this is good stuff! actually, you're nearly there. your php shouldn't change, your java should! you just need to check the result of the response inside your java code. redeclare your java method as

public String executeHttpGet() {

then, let this method return the variable page.

now you can create a helper method somewhere. if you put it in the same class as executeHttpGet, it will look like this:

public boolean imeiIsKnown(){
    return executeHttpGet().equals("True");
}

now you can call this method to find out if your imei is known in your php backend.

Solution 2

I'm not sure is it good for you or not - but you can use headers. If the IMEI was found you can send header("Status: HTTP/1.1 200 OK") otherwise send header("Status: 404 Not Found").

And then you should check response status in your application.

Share:
11,609
Donal Rafferty
Author by

Donal Rafferty

Software Engineer

Updated on June 12, 2022

Comments

  • Donal Rafferty
    Donal Rafferty almost 2 years

    I currently have a piece of code in my Android application that picks up the devices IMEI and sends that IMEI as a parameter to a PHP script that is hosted on the Internet.

    The PHP script then takes the IMEI parameter and checks a file to see if the IMEI exists in the file, if it does I want to be able to let my Android application know that the IMEI exists. So essentially I just want to be able to return True to my application.

    Is this possible using PHP?

    Here is my code so far:

    Android/Java

    //Test HTTP Get for PHP
    
            public void executeHttpGet() throws Exception {
                BufferedReader in = null;
                try {
                    HttpClient client = new DefaultHttpClient();
                    HttpGet request = new HttpGet();
                    request.setURI(new URI("http://testsite.com/" +
                            "imei_script.php?imei=" + telManager.getDeviceId()
                            ));
                    HttpResponse response = client.execute(request);
                    in = new BufferedReader
                    (new InputStreamReader(response.getEntity().getContent()));
                    StringBuffer sb = new StringBuffer("");
                    String line = "";
                    String NL = System.getProperty("line.separator");
                    while ((line = in.readLine()) != null) {
                        sb.append(line + NL);
                    }
                    in.close();
                    String page = sb.toString();
                    System.out.println(page);
                    } finally {
                    if (in != null) {
                        try {
                            in.close();
                            } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
    

    The above sends the IMEI as a parameter to the PHP script which picks it up successfully and runs a check against the file successfully, however I neeed to then be able to send a positive response back from the PHP script if the IMEI matches one in the file.

    Here is the PHP:

    <?php
        // to return plain text
        header("Content-Type: plain/text"); 
        $imei = $_GET["imei"];
    
        $file=fopen("imei.txt","r") or exit("Unable to open file!");
    
        while(!feof($file))
         {
        if ($imei==chop(fgets($file)))
         echo "True";
         }
    
        fclose($file);
    
    ?>
    

    So instead of echo True I want to be able to let my application know that the IMEI was found, is this possible and if so what should I be using to achieve it?

  • davogotland
    davogotland over 13 years
    hmm... maybe the method imeiIsKnown should return executeHttpGet().startsWith("True"); or perhaps return executeHttpGet().equals("True" + System.getProperty("line.separator"));
  • Donal Rafferty
    Donal Rafferty over 13 years
    Thanks I simply removed the new line variable so that just "True" is returned in the variable page, thanks. Now to start looking at hooking it up to a database :)
  • jishan
    jishan almost 9 years
    suppose in the above scenario asked I am at the php end and android device is connecting with me and taking some response. Now is there any way that I can be sure that the response has reached to the android application.
  • jishan
    jishan almost 9 years
    suppose in the above scenario asked I am at the php end and android device is connecting with me and taking some response. Now is there any way that I can be sure that the response has reached to the android application. @davogotland