2012-04-20 2 views
3

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

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», кажутся пустыми. Точная полученная электронная почта «Привет, Как вы ,? У вас стареет». , который указывает мне, что сервер отправляет thename и theage как пустые. Кто-нибудь из вас пробовал это раньше? Что я делаю неправильно? Огромное спасибо за то, что вы нашли время, чтобы прочитать мой код и, если возможно, ответить на мои вопросы.

EDIT: Очень идиотично меня -> «GETS» необходимо изменить на «POST». Оставляя его здесь для архивных целей :)

ответ

10

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

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

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

попробовать

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

Thanx просто попытался его, и он работает. Примите как можно скорее, как только смогу. – user901898

-1

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

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

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

Или Чанга Ethe Android сторона этого -

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

Это похоже на попытку ответить на вопрос, но ответ мне очень неясен. Можете ли вы просмотреть свой собственный ответ, отредактировать его и как немного уточнить его, так и код стиля как код (использовать обратные или кодовые блоки, использовать кнопку над полем редактирования при выборе кода)? – Sumurai8