Я пытаюсь отправить 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" />
Есть предположения?