Не могу обработать POST запрос Android (chunked, FastCGI?)

Скрипты, разработка, настройка, администрирование

Модераторы:dobs, ArniXXX, hostess, bj

Ответить
Сообщение
Автор
reshpav2
Сообщения:1
Зарегистрирован:Чт ноя 02, 2017 19:48
Не могу обработать POST запрос Android (chunked, FastCGI?)

#1 Сообщение reshpav2 » Чт ноя 02, 2017 20:26

Здравствуйте.

Хочу получить данные из 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 запроса в таком случае?

Решетуха Павел

Ответить