Получение данных POST запроса?

Здравствуйте уважаемые хабражители.


Столкнулся только что с одной проблемкой, не могу понять с каким параметров отправляются данные POST запросом из программы.


Проснифил трафик свой, получил пакет с данными, и не понятно с каким ключом по POST запросу отправляются эти данные.


Вот собственно сам запрос:

POST /external/xml/ HTTP/1.1
Content-Length: 238
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: ru-RU,en,*
User-Agent: Mozilla/5.0
Host: **************
Content-Type: application/x-www-form-urlencoded

<?xml version="1.0" encoding="windows-1251"?><client><call>************************</call></client>



Более в запросе ничего нету!


Как видите отправляются заголовки и следом сразу данные, без ключа!


Данные идентичные в разных сниферах.

Просто хочу сделать аналог дестопного приложения под Android, а из-за этого непонимания ситуации попал в тупик


Заранее всем благодарен!
  • Вопрос задан
  • 19647 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
Код примерно такой:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://site.com/url");

StringEntity requestEntity = new StringEntity("<?xml version=\"1.0\" encoding=\"windows-1251\"?>..."); // можно использовать ByteArrayEntity или InputStreamEntity если данные берутся из файла
requestEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(requestEntity);
HttpResponse response = httpClient.execute(httpPost);
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
WebByte
@WebByte
Вы сами ответили на свой вопрос — данные отправляются в теле запроса.
То, что Вы привыкли, что в нем они обычно идут примерно так:

foo=bar&foo1=bar1

не значит, что нельзя отправить и без подобного форматирования.

Ключевые слова, по которым можно поискать: RAW POST, POSTDATA итп.
Ответ написан
Комментировать
Можно получить содержимое запроса, например, через $HTTP_RAW_POST_DATA
НО:
У вас содержимое POST-запроса не соответствует
Content-Type: application/x-www-form-urlencoded
Если вы хотите постить именно XML, то должен быть
Content-Type: text/xml
Если вы хотите постить именно как данные формы и обращаться по имени поля, а не к HTTP_RAW_POST_DATA, то кодируйте их соответствующим образом.
Ответ написан
@1nd1go
Не совсем понятно, о каком ключе вы говорите?

Во-первых, вы лучше тогда данные отправляйте по https. Тогда транспорт будет защищенным. Без ключей.

Если вы говорите о каком-нибудь oAuth токене или еще какой подписи, то покажите код, который отправляет ваш post запрос. В примере WNezRoS, по-моему, тоже не будет каких-либо ключей, так как я не вижу, чтобы что-то для этого вставлялось…
Ответ написан
SCINER
@SCINER
Если в php, тогда можно получить эти данные вот таким способом:

$request = file_get_contents('php://input');
Ответ написан
mace-ftl
@mace-ftl
file.php?id=165&sid=1088c7be4e5127532d93
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы