Я хочу сделать простой 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 = "someemail@gmail.com"; $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», кажутся пустыми. Точная электронная почта получена «Привет, как дела,« У вас стареет ». что указывает на то, что сервер отправляет то же самое и тег как пустой. Кто-нибудь из вас пробовал это раньше? Что я делаю неправильно? Большое вам спасибо за то, что вы потратили время на чтение моего кода и, если возможно, ответили на мои вопросы.
EDIT: Очень идиотский со мной -> «GETS» нужно изменить на «POST». Оставляя его здесь для архивных целей 🙂
Вы используете $_GET
вместо $_POST
чтобы получить значения опубликованных данных. Вы хотите
<?php $thename=$_POST["thename"]; $theage=$_POST["theage"];
вы отправляете запрос POST, но ваш скрипт php использует переменные GET
пытаться
$thename=$_POST["thename"]; $theage=$_POST["theage"];
Метод, используемый как для Android, так и для PHP, должен GET
или POST
.
В этом случае вы можете либо изменить PHP на это –
$thename = $_POST["thename"]; $theage = $_POST["theage"];
Или с этой стороны Android,
HttpGet httppost = new HttpGet("http://somewhere.net/default.php");