“POST requires content-length error” occur when i am trying to call custom Rest API @HttpDelete Resource

“POST requires content-length error” occur when i am trying to call custom Rest API @HttpDelete Resource ..

HttpRequest  req1=new HttpRequest();
req1.setMethod('POST');
    req1.setEndpoint('https://ap1.salesforce.com/services/apexrest/MyPackageAC/ServerRestApi/0019000001N7LjKAAV?_HttpMethod=DELETE');  
req1.setHeader('Authorization','OAuth '+access_token);

HttpResponse res=p1.send(req1);
system.debug(res);
result=res.getBody();

@RestResource(urlMapping='/ServerRestApi/*')
global class ServerResource
{

@HttpDelete
  global static void doDelete() {
    RestRequest req = RestContext.request;
    RestResponse res = RestContext.response;
    String accountId=req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
    Account account = [SELECT Id FROM Account WHERE Id = :accountId];
    delete account;
  }

}

Answer

POST requests require the Content-Length header to be set.

Salesforce does this automatically if you add a body to your HttpRequest. If you don’t add a body then you need to manually set it to zero.

If you add the following to your callout you should be ok.

req.setHeader('Content-Length', '0');

Attribution
Source : Link , Question Author : Amit Chaudhary , Answer Author : Alex Tennant

Leave a Comment