Issue reading HTTP request body from a JSON POST in PHP

http-post, json, php, post

Solution

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.

Problem

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!

Original source

Related problems