Take the 2-minute tour ×

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:

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!

share|improve this question
The content-type for the JSON body is wrong, so it might have been removed. But try $HTTP_RAW_POST_DATA –  mario Aug 13 '11 at 1:18
@mario I've seen that variable before, but wasn't sure how to use it. json_decode($HTTP_RAW_POST_DATA); didn't work –  Hartley Brody Aug 13 '11 at 1:23
See the manual page. It needs to be enabled in the php.ini first. Also did you try with the correct MIME type yet? mod_security enabled by any chance? –  mario Aug 13 '11 at 1:24

2 Answers 2

up vote 25 down vote accepted

Thanks to others for the input. 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.

Hope this helps someone else!

share|improve this answer
this is helpful, it works for me –  Aaditya Bhatt Sep 8 '13 at 12:27

I hope this helps json_encode and json_decode Alternatives

share|improve this answer

Your Answer


