POST
On my local machine, I want to use cURL as an HTTP client like so:
curl -X POST -F '[email protected]' -F 'password=blink182' http://example.com
The above curl statement uses the HTTP POST method which can be retrieved in PHP like so:
echo $_POST['email']; // [email protected]
echo $_POST['password']; // blink182
php://input
However, what I really wanted is the data from the PHP input stream php:://input
and not from the POST method $_POST
.
The PHP input stream can be retrieved in PHP like so:
$input = json_decode( file_get_contents( 'php://input' ) );
echo $input->email; // [email protected]
echo $input->password; // blink182
Which brings me to my question, how to send PHP input stream data using curl?
CodePudding user response:
From the PHP website:
php://input
is a read-only stream that allows you to read raw data from the request body.php://input
is not available withenctype="multipart/form-data"
.
So if you specify the Content-Type
as application/json
using -H "Content-Type: application/json"
you ought to get it in the input stream
complete example:
curl -X POST https://reqbin.com/echo/post/json
-H 'Content-Type: application/json'
-d '{"email":"[email protected]","password":"blink182"}'