Здравствуйте.
Хочу получить данные из POST запроса Android приложения:
<?php
$input = file_get_contents('php://input');
$fp = fopen("input.txt", "w");
fwrite($fp, $input);
fclose($fp);
?>
В папке обработчика запроса после его выполнения создается пустой файл "input.txt"
При выполнении POST запроса из командной строки curl.exe, данные получаю корректно.
Android запрос, в отличие от curl, имеет атрибут: "Transfer-Encoding: chunked".
Гугл подсказал, что некоторые версии Apache имеют проблемы с обработкой POST запросов с атрибутом "chunked". Рекомендовали в таком случае получать и обрабатывать "сырые" данные (для этого необходимо установить параметр always_populate_raw_post_data = On в php.ini):
<?php
$fp = fopen("raw.txt", "w");
fwrite($fp, $HTTP_RAW_POST_DATA );
fclose($fp);
?>
К сожалению, этот метод не сработал. Обработчик POST запрос из Android-приложения создает файл нулевой длины.
Здесь написано, что это проблема связки Apache и FastCGI ("raw POST data missing with chunked encoding, FastCGI"):
https://bugs.php.net/bug.php?id=60826
Насколько я понимаю, "Transfer-Encoding: chunked" довольно распространненый метод обмена данными для мобильных устройств. Возможно все-таки есть какой-нибудь способ получить данные POST запроса в таком случае?
Решетуха Павел
Не могу обработать POST запрос Android (chunked, FastCGI?)
Модераторы: dobs, ArniXXX, hostess, bj