Я пытался отправить POST-запрос на URL-адрес из моего приложения Android, но все, что я получаю, это пустой $ _POST. Вот мой код, он работает внутри Asynctask. Я посмотрел на несколько вопросов, подобных этому в StackOverflow, но ни один из них не мог мне помочь.
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php");
try {
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("id", "12345"));
pairs.add(new BasicNameValuePair("name", "John"));
pairs.add(new BasicNameValuePair("post", "test123"));
post.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8));
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
HttpResponse response = httpClient.execute(post);
String text = EntityUtils.toString(response.getEntity());
System.out.println("STATUS CODE " + response.getStatusLine().getStatusCode());
System.out.println("RETURN " + text);
} catch (ClientProtocolException e) {
System.out.println("ERROR1: " + e.getStackTrace());
} catch (IOException e) {
System.out.println("ERROR2: " + e.getStackTrace());
}
На стороне сервера у меня есть тестирование тестового скрипта PHP, если переменная $ _POST в порядке.
<?php echo "ISSET = " . isset($_POST["id"]) . isset($_POST["name"]) . isset($_POST["post"]); ?>
Все, что я получаю это не набор $ _POST
STATUS CODE 200
RETURN ISSET =
Я не получаю предупреждение об ошибке и приложение не врезаться.
Я пытался поставить переменные как запрос GET, прикрепленного к URL и изменил мой PHP-файл, чтобы обработать запрос на $ _GET:
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php?id=1234&name=John&post=test123");
Он работал отлично. Я мог бы читать все переменные $ _GET в скрипте PHP. Но мне нужно, чтобы это был запрос POST.
У меня есть разрешение INTERNET в моем AndroidManifest.xml. В этом же приложении я делаю запросы на другой скрипт PHP, и он работает так, как ожидалось.
<uses-permission android:name="android.permission.INTERNET" />
Любые мысли?
Пожалуйста, сделайте var_dump ($ _ POST) для отладки. – VM4
Не совсем решение, но скорее предложение: библиотека Apache HTTP в android [очень старая и не поддерживается] (http://android-developers.blogspot.co.il/2011/09/androids-http-clients.html). Вам лучше использовать HttpsUrlConnection или библиотеку, такую как модернизация. – Eran
Когда я делаю var_dump ($ _ POST), я получаю «RETURN array (0) {}» – emedrado