http — PHP :: Получить POST-запрос содержимого

Я отправляю запрос 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: // ввод’), но я не уверен, рекомендуется ли это делать.

1

Решение

Использовать 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");
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]