Я отправляю запрос POST, используя WebClient.UploadData()
метод (C #) для моего веб-сервера. Пакет, отправленный на мой веб-сервер, выглядит так:
POST / HTTP/1.1
Host: {ip}
Content-Length: {length}
Expect: 100-continue
Connection: Keep-Alive
{buffer_content}
Поскольку {buffer_content} нигде не назначен в массиве $ _POST, у меня есть следующий вопрос …
Вопрос: Как мне прочитать {buffer_content} с помощью PHP?
Я наткнулся на file_get_contents ( ‘PHP: // ввод’), но я не уверен, рекомендуется ли это делать.
Использовать php://input
поток:
$requestBody = file_get_contents('php://input');
Это рекомендуемый способ сделать это и в PHP 7.0 единственный способ. Ранее иногда существовала глобальная переменная $HTTP_RAW_POST_DATA
, но будет ли он существовать, будет зависеть от настройки INI, и его создание ухудшит производительность. Эта переменная устарела и удалена.
Помните, что до PHP 5.6 вы можете только читать php://input
один раз, поэтому убедитесь, что вы храните его.
Если у вас есть ваше тело, вы можете декодировать его из JSON или чего-то еще, если вам это нужно:
$requestBody = json_decode($requestBody) or die("Could not decode JSON");
Других решений пока нет …