I am having a problem reading JSON content using a RestResource. I am always getting a null value. My goal is to create a webhook to receive JSON content. Here is what I did.

Created a Visualforce page with a controller which is a RestResource.

<apex:page controller="StripeRestSample" action="{!doPost}">

Here is the code for the "StripeRestSample" controller.

global class StripeRestSample 
    global static void doPost()
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;

        system.debug('======================================> Step 1: ' + req);
        system.debug('======================================> Step 2: ' + res);

        if (req != null) {
            Blob body = req.requestBody;
            String bodyString = body.toString();

And then, exposed the Visualforce page using a site.

Now my end point is:


Then I am trying to test it with the following cURL command.

cURL -v -H "Content-Type: application/json" -d '{"test" => "test" }' https://mydomain.secure.force.com/ipn/StripeTest

Every time I run the cURL command, I could see a request coming in from the debug logs and the values are always null. Here is the debug log:

01:17:02.022 (22088027)|EXECUTION_STARTED
01:17:02.022 (22125597)|CODE_UNIT_STARTED|[EXTERNAL]|066330000004plG|VF: /apex/StripeTest
01:17:02.038 (38138779)|CODE_UNIT_STARTED|[EXTERNAL]|01p330000005c8r|StripeRestSample 
01:17:02.038 (38157097)|SYSTEM_MODE_ENTER|true
01:17:02.038 (38761812)|CODE_UNIT_FINISHED|StripeRestSample 
01:17:02.038 (38902335)|CODE_UNIT_STARTED|[EXTERNAL]|01p330000005c8r|StripeRestSample invoke(doPost)
01:17:02.039 (39211422)|USER_DEBUG|[10]|DEBUG|======================================> Step 1: null
01:17:02.039 (39282186)|USER_DEBUG|[11]|DEBUG|======================================> Step 2: null
01:17:02.039 (39324631)|CODE_UNIT_FINISHED|StripeRestSample invoke(doPost)
01:17:02.039 (39361984)|VF_APEX_CALL|j_id0|{!doPost}|PageReference: none
01:17:02.049 (49099697)|CUMULATIVE_LIMIT_USAGE

Really appreciate if you can let me know where and what I am doing wrong.

1 Answer 1


might be because of the data format you are passing in

-d '{"test" => "test" }' is not a valid JSON

try changing it to below and see if it works

-d "{\"test\":\"test\"}"
  • Hi Vamsi Krishna, Thanks for your suggestion. I tried changing the JSON as you suggested, but I am still getting the same result.
    – Prasad
    Jan 7, 2016 at 17:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .