“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