downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

http_get_request_headers> <http_get_request_body_stream
[edit] Last updated: Fri, 25 May 2012

view this page in

http_get_request_body

(PECL pecl_http >= 0.10.0)

http_get_request_bodyRécupère le corps demandé sous la forme d'une chaîne de caractères

Description

string http_get_request_body ( void )

Récupère le corps demandé (e.g. données POST ou PUT).

Cette fonction ne peut pas être utilisée après la fonction http_get_request_body_stream() si la méthode de la demande est autre chose que POST.

Liste de paramètres

Valeurs de retour

Retourne le corps demandé sous la forme d'une chaîne de caractères, ou NULL si une erreur survient.

Voir aussi



http_get_request_headers> <http_get_request_body_stream
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes http_get_request_body
Tim Trinidad 27-May-2010 05:03
It seems that there is some weird behavior when using http_get_request_body() with fopen('php://input'). Specifically, reading the input with the fopen('php://input') routine before calling http_get_request_body() on a PUT HTTP request.

Here are some examples:

A POST request:
*********************************************************
PUT http://example.com/requestbodytest.php HTTP/1.1
Host: example.com
Keep-Alive: 300
Connection: keep-alive
Content-Type: text/xml
Content-Length: 58

<?xml version="1.0" encoding="utf-8" ?>
<body>test</body>
*********************************************************

with the following script:
*********************************************************
<?php
$body
= '';
$fh   = @fopen('php://input', 'r');
if (
$fh)
{
  while (!
feof($fh))
  {
   
$s = fread($fh, 1024);
    if (
is_string($s))
    {
     
$body .= $s;
    }
  }
 
fclose($fh);
}
print(
"-------------- PHP Input Stream ----------------\n$body\n\n");

$body2 = http_get_request_body();
print(
"---------- http_get_request_body() -------------\n$body2\n\n");

?>
*********************************************************

outputs this:
*********************************************************
-------------- PHP Input Stream ----------------
<?xml version="1.0" encoding="utf-8" ?>
<body>test</body>

---------- http_get_request_body() -------------
<?xml version="1.0" encoding="utf-8" ?>
<body>test</body>
*********************************************************

The same request to the same script using an HTTP PUT request, however, outputs this:
*********************************************************
-------------- PHP Input Stream ----------------
<?xml version="1.0" encoding="utf-8" ?>
<body>test</body>

---------- http_get_request_body() -------------
*********************************************************

It seems a valid workaround is to put a call to http_get_request_body() to cache the body content before an expected read to php://input (i.e. simply calling the function without manually storing the result caches the content for subsequent calls).
neil at foo dot co dot za 29-Feb-2008 01:40
Like php://input and http_get_request_body_stream(), http_get_request_body() doesn't seem to work with enctype="multipart/form-data".
osborn dot steven at gmail dot com 23-Aug-2007 11:01
For those of you without the HTTP extension, try:
<?php
  $body
= @file_get_contents('php://input');
?>

 
show source | credits | sitemap | contact | advertising | mirror sites