user901898
user901898

Reputation: 335

HTTP POST on Android

I want to make a simple HTTPRequest to a php script and I have tried to make the very most basic of apps to get the functionality working. I want to test that my app is sending the data I feed it so I've made the android app send to a server and that server is supposed to send me the data I've put into the app. The code for the "postData" function is to send data from android to the server and the code for the "default.php" is the recieving php file on a webserver which then forwards the data to my email address (not given). Here is the code

    public void postData() {

    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://somewhere.net/default.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("thename", "Steve"));
        nameValuePairs.add(new BasicNameValuePair("theage", "24"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        //HttpResponse response = httpclient.execute(httppost);

        // Execute HTTP Post Request
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);

    //Just display the response back
    displayToastMessage(responseBody);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

as well as for "default.php"

<?php 
$thename=$_GET["thename"]; 
$theage=$_GET["theage"];

$to = "[email protected]";
$subject = "Android";
$body = "Hi,\n\nHow are you," . $thename . "?\n\nAt " . $theage . " you are getting old.";
if (mail($to, $subject, $body)) 
{
echo("<p>Message successfully sent!</p>");
} 
else 
{
echo("<p>Message delivery failed...</p>");
}
?>

Here are the links to the code in pastebin: postData() and default.php

I recieve an email however the data sent "thename" and "theage" seem to be empty. The exact email received is "Hi, How are you,? At you are getting old." which indicates to me that the server is sending thename and theage as empty. Have any of you tried this before? What am I doing incorrectly? Thank you so much for taking the time out to read my code and if possible to reply to my questions.

EDIT: Very idiotic of me -> the "GETS" need to change to "POST". Leaving it here for archive purposes :)

Upvotes: 3

Views: 6190

Answers (3)

swarrier
swarrier

Reputation: 1

The method used in both Android and PHP should the same, either GET or POST.

In this instance you can either change the PHP to this -

$thename = $_POST["thename"];
$theage = $_POST["theage"];

Or the chang ethe Android side to this -

HttpGet httppost = new HttpGet("http://somewhere.net/default.php");

Upvotes: -1

Estragon
Estragon

Reputation: 1462

you are sending a POST request but your php script uses GET variables

try

 $thename=$_POST["thename"]; 
$theage=$_POST["theage"];

Upvotes: 1

jprofitt
jprofitt

Reputation: 10964

You're using $_GET instead of $_POST to get the values of the posted data. You want

<?php 
$thename=$_POST["thename"]; 
$theage=$_POST["theage"];

Upvotes: 10

Related Questions