I've changed the endpoint url and the json payload for security reasons but let's assume that I've tested the endpoint using advanced rest client and with the same json in my apex code and it works.

myJson: {
  "user" : "[email protected]",
  "pass" : "mypass",
  "url" : "https://login.salesforce.com/services/Soap/u/37.0",
  "type" : "New"

My callout looks like this

    HttpRequest req = new HttpRequest();
    HttpResponse res = new HttpResponse();
    Http http = new Http();

    String SessionId = Userinfo.getSessionId();
    String strURL = System.URL.getSalesforceBaseURL().toExternalForm();
    req.setHeader('Content-Type', 'application/json');
    JSONGenerator gen = JSON.createGenerator(true);
        gen.writeStringField('user', user);
        gen.writeStringField('pass', pass);
        gen.writeStringField('url', url);
        String myJson = gen.getAsString();

    try {
        res = http.send(req);

Here are my request and response

CALLOUT_REQUEST|System.HttpRequest[Endpoint=https://myapp.herokuapp.com/webapi/myapi, Method=POST]
CALLOUT_RESPONSE|System.HttpResponse[Status=No Content, StatusCode=204]

I'm having trouble identifying why this isn't working. The issue is, the response is empty. it's supposed to return a json.

  • So, you are saying that same POST request does not work from SF and works from other tool, like postman?
    – kurunve
    Feb 16, 2017 at 16:47
  • 1
    What exactly is the Problem? Status code 204 says everything worked well. Feb 16, 2017 at 16:53
  • @AndreeWille It didn't return the json i was expecting. it's empty
    – Tim Tom
    Feb 16, 2017 at 17:02
  • What JSON do you expect. Status Code 204 means: The server successfully processed the request and is not returning any content. Feb 16, 2017 at 17:04
  • @AndreeWille i'm expecting a response from my api. and it's not coming through
    – Tim Tom
    Feb 16, 2017 at 17:18

1 Answer 1


The issue is that, even though the code is working, the http response body was empty. I set req.setHeader('Accept', 'application/json'); on the request before sending it and that seemed to give me what I wanted. Cheers!

You must log in to answer this question.

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