Issue reading HTTP request body from a JSON POST in PHP
PhpJsonPostHttp PostPhp Problem Overview
I'm writing a script that is registered as an endpoint for a webhook. I know that it's successfully registered because I'm writing the header of every request to my server logs. Here's a sample:
Content-Type: text/xml; charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1
Host: =={obfuscated}==
Content-Length: 1918
The API that I've registered with is POST-ing a JSON object to my script, and I'd like to parse that object using PHP. As you can see from the request header, there's a nice big fat JSON object waiting to be parsed. It seems straightforward, but it hasn't been.
At first I tried using $_POST['json']
or just $_POST
but since the data isn't in an array, I wasn't really sure how to access it like that.
I've tried using file_get_contents('php://input')
and fopen('php://input', 'r')
with and without json_decode()
but no luck. I can't use http_get_request_body()
since the server I'm on doesn't have PECL and that's out of my control.
Are there any other ways to interact with the POST-ed JSON object that I'm missing? Thanks!
Php Solutions
Solution 1 - Php
It turns out that I just needed
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array
where the second parameter in json_decode
returned the object as an array.
Solution 2 - Php
Even when the following works.
$inputJSON = file_get_contents('php://input');
If you want to continue using $_POST send the data as FormData
var fd = new FormData();
fd.append('key', 'value');
return axios.post('url', fd)