Android 4.0 превращает POST в GET - PullRequest
       25

Android 4.0 превращает POST в GET

2 голосов
/ 20 февраля 2012

У меня есть приложение Gingerbread для Android, которое я портирую на ICS.Это приложение связывается с веб-сервером, отправляющим HTTP POST.Мое приложение отлично работает на Gingerbread.Однако у меня возникли проблемы после переноса на ICS.Я обнаружил, что запросы POST, которые отправляет мое приложение, на самом деле изменены на GET.

Самое смешное, что Android фактически сообщает, что POST действительно используется.

URL oURL = new URL(sURL);

HttpURLConnection oHTTPConnection = (HttpURLConnection)(oURL.openConnection());
oHTTPConnection.setDoInput(true);
oHTTPConnection.setDoOutput(true);
oHTTPConnection.setRequestMethod("POST");

// set headers...
int nResponse = oHTTPConnection.getResponseCode();

String sMethod = oHTTPConnection.getRequestMethod();  // Returns "POST"

Однако серверсказал бы иначе.Я изменил приложение веб-сервера, чтобы проверить метод запроса, который он получает, а затем поместил это значение в тело ответа, которое оно отправляет обратно в мое приложение Android.И в моем приложении для Android я получаю «GET».

Я пытался использовать HttpClient с HttpPost, но у меня возникла та же проблема.

Как я уже говорил, у меня не было этой проблемыв пряниках.Кроме того, я читал из другой ветки здесь аналогичную (но противоположную) проблему, которая также возникает только в ICS: Android 4.0 ICS, превращающая запросы HttpURLConnection в запросы POST .

Есть кто-нибудь ещеиспытал это?Может кто-нибудь помочь мне решить эту проблему?

Заранее спасибо!

Рай

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Попробуйте выполнить следующий ответ: https://stackoverflow.com/a/8799198/372076

Я обнаружил, что до ICS можно было бы сделать POST без тела без предоставления значения Content-Length, однако послеICS вы должны установить Content-Length: 0.

0 голосов
/ 19 февраля 2013

Не знаю, нашли ли вы уже исправление для этого, но у меня возникла та же проблема, и я просто нашел решение.В моем случае это была проблема на стороне сервера с перенаправлением Apache.Я делал:

Url url = new Url("http://aaaa.bbbb.com/");

Изменено на:

Url url = new Url("http://aaaa.bbbb.com/index.php");

Каким-то образом перенаправление превращало мой POST в GET без параметров.

...