Как получить запрос содержимого (тела) в PHP? - PullRequest
12 голосов
/ 25 августа 2011

Я отправляю запрос на php-сервер с XML в содержании:

POST /index3.php HTTP/1.0
Connection: Close
Accept: application/xml
Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?>
<root />

Я проверил глобальные переменные (например, $_GET, $_POST, $_ENV, $_FILES, $_REQUEST ...) но все они пусты.

Как я могу получить содержимое на сервере?

Ответы [ 3 ]

23 голосов
/ 25 августа 2011

Попробуйте это

$xml = file_get_contents('php://input');

Из руководства :

php: // input - поток только для чтенияэто позволяет вам читать необработанные данные из тела запроса.

3 голосов
/ 25 августа 2011

Может быть в $HTTP_RAW_POST_DATA (в зависимости от Always_populate_raw_post_data ) или вы можете получить его, позвонив file_get_contents("php://input") ( manual ).

1 голос
/ 25 августа 2011

Попробуйте это:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){
    $xml = $GLOBALS["HTTP_RAW_POST_DATA"];
    $file = fopen("data.xml","wb");
    fwrite($file, $xml);
    fclose($file);
    echo($GLOBALS["HTTP_RAW_POST_DATA"]);
}
?>

Надеюсь, это поможет.

...