2015-12-19 3 views
1

Я отправляю запрос POST с использованием метода WebClient.UploadData() (C#) на мой веб-сервер. Пакет, отправленный на мой веб-сервер выглядит так:PHP :: Получить текст запроса POST

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: // input'), но я не уверен, что это рекомендуется делать.

+0

Там нет ничего плохого в PHP: // ввод. Это необработанный, непроверенный кусок запроса, а иногда и лучший вариант (если тело не является набором пар ключ-значение, например). Однако имейте в виду, что поток был прочитан один раз до php 5.6. – Rangad

+1

Вы пробовали использовать 'var_dump ($ _ POST);'? –

+0

Каков код состояния запроса POST? – EricLavault

ответ

3

Используйте 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"); 
Смежные вопросы