0

I have narrowed down why my apex post request is not sending to an external API. For some reason the JSON data that I serialize and send is wrong but everything works when I test it using Postman.

    Http http = new Http();
    HttpRequest req = new HttpRequest();
    req.setEndpoint('apilink.com');
    req.setMethod('POST');
    req.setHeader('Content-Type', 'application');
    req.setHeader('Authorization', 'token'); 

    String body = '{"gift_id": "12345", "recipients": [{"email": 
    "test@email.com", "fist_name": "Test", "last_name": "test", 
    "message": "Testing post", "type": "email"}]}';
    req.setBody(JSON.serialize(body));
    HttpResponse response = http.send(req);

I get error code 400 which means bad data is being sent.

Any help would be awesome.

4
  • Welcome to Salesforce Stack Exchange. Can you please share the rest (no pun intended) of the pertinent code (you can genericize any sensitive info, like a specific endpoint) - as in, are you calling req.setHeader, req.setMethod, etc.? You can edit your question to add any info.
    – Moonpie
    Jun 18, 2021 at 17:49
  • Added @Moonpie. Thanks! Jun 18, 2021 at 17:57
  • @Ken not sure if this is a typo, but why is there JSON.serialize twice in the code? How r u building the body string? Looks like the string body is correctly formatted in json, try sending the string directly in the request body param
    – Shamina
    Jun 18, 2021 at 18:18
  • @Shamina yup it was a typo. Jun 18, 2021 at 18:28

1 Answer 1

0

Figured it out (Noob mistake).... Did not need to serialize the JSON data. Thanks everyone.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.