Reputation: 19487
I have a script that is trying to send data to my site using HTTP PUT. Normally, I would just retrieve it by reading from the input stream with file_get_contents('php://input')
. However, when I try that with Laravel, I don't get anything! Why not? How do I read the raw input data?
Upvotes: 20
Views: 28388
Reputation: 11
You may encounter an error when using Request::getContent();
, because the latest Symfony Request module (which underlie Laravel's Request module) no longer provides getContent
as a static method. Instead I use Request::createFromGlobals()->getContent();
.
Reference: Accessing Request Data
Upvotes: 1
Reputation: 4613
You can also use Request::json($key, $default);
to return the value of a specific key in the JSON payload.
Upvotes: 1
Reputation: 19487
Laravel intercepts all input. If you're using PHP prior to 5.6, the php://input
stream can only be read once. This means that you need to get the data from the framework. You can do this by accessing the getContent
method on the Request
instance, like this:
$content = Request::getContent(); // Using Request facade
/* or */
$content = $request->getContent(); // If you already have a Request instance
// lying around, from say the controller
Since Illuminate\Request
extends Symfony\Component\HttpFoundation\Request
, and getContent
is defined here: http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Request.html#method_getContent
Upvotes: 43