HTTP POST на Android

Я хочу сделать простой HTTPRequest для php-скрипта, и я попытался сделать самое простое из приложений, чтобы заставить его работать. Я хочу проверить, что мое приложение отправляет данные, которые я ему подаю, поэтому я отправил приложение Android на сервер, и этот сервер должен отправить мне данные, которые я поместил в приложение. Код для функции «postData» предназначен для отправки данных с Android на сервер, а код для «default.php» — это получение php-файла на веб-сервере, который затем пересылает данные на мой адрес электронной почты (не указан). Вот код

    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
    }
}

а также для "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>");
}
?>

Вот ссылки на код в pastebin: postData() и default.php

Я получаю электронное письмо, однако данные, отправленные «thename» и «theage», кажутся пустыми. Точное полученное электронное письмо: «Привет, как дела? Вы стареете». что указывает мне, что сервер отправляет имя и возраст как пустые. Кто-нибудь из вас пробовал это раньше? Что я делаю неправильно? Большое спасибо, что нашли время, чтобы прочитать мой код и, если возможно, ответить на мои вопросы.

РЕДАКТИРОВАТЬ: Очень идиотски с моей стороны -> «ПОЛУЧИТЬ» нужно изменить на «ПОСТ». Оставлю здесь для архива :)


person user901898    schedule 20.04.2012    source источник


Ответы (3)


Вы используете $_GET вместо $_POST для получения значений опубликованных данных. Вы хотите

<?php 
$thename=$_POST["thename"]; 
$theage=$_POST["theage"];
person jprofitt    schedule 20.04.2012

вы отправляете запрос POST, но ваш php-скрипт использует переменные GET

пытаться

 $thename=$_POST["thename"]; 
$theage=$_POST["theage"];
person Estragon    schedule 20.04.2012
comment
Спасибо, только что попробовал, и это работает. Приму как правильно, как только смогу. - person user901898; 20.04.2012

Метод, используемый как в Android, так и в PHP, должен быть одинаковым: либо GET, либо POST.

В этом случае вы можете либо изменить PHP на это -

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

Или изменить сторону Android на это -

HttpGet httppost = new HttpGet("http://somewhere.net/default.php");
person swarrier    schedule 26.01.2015
comment
Кажется, это попытка ответить на вопрос, но ответ мне очень неясен. Можете ли вы просмотреть свой собственный ответ, отредактировать его, а также немного уточнить и оформить код как код (используйте обратные кавычки или блоки кода; используйте кнопку над полем редактирования, когда выбран код)? - person Sumurai8; 26.01.2015