I am writing a client code for a server which Delete API. The API specification requires data to be sent. I am using HttpComponents v3.1 library for writing client code. Using the HtpDelete class I could not find a way to add request data to it. Is there a way to do so ? Below is the code snippet.
HttpDelete deleteReq = new HttpDelete(uriBuilder.toString());
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair(RestConstants.POST_DATA_PARAM_NAME,
postData.toString()));
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
entity.setContentEncoding(HTTP.UTF_8);
//deleteReq.setEntity(entity); // There is no method setEntity()
deleteReq.setHeader(RestConstants.CONTENT_TYPE_HEADER, RestConstants.CONTENT_TYPE_HEADER_VAL);
} catch (UnsupportedEncodingException e) {
logger.error("UnsupportedEncodingException: " + e);
}
Thanks in advance.
Yes it is allowed to include a body on DELETE requests, but it's semantically meaningless. What this really means is that issuing a DELETE request with a request body is semantically equivalent to not including a request body.
why not do this :-)
class MyHttpDelete extends HttpPost{
@Override
public String getMethod() {
return "DELETE";
}
}
I haven't tried this, and it is as hackish as hell and I wolud feel happier if it turns out there is better solution, but you might try to extend PostMetod and override getName() method to return "DELETE".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With