How to set RequestBody for Http Delete method.

爷,独闯天下 提交于 2019-12-10 14:43:39

问题


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.


回答1:


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".




回答2:


why not do this :-)

class MyHttpDelete extends HttpPost{
    @Override
    public String getMethod() {
        return "DELETE";
    }
}


来源:https://stackoverflow.com/questions/10093514/how-to-set-requestbody-for-http-delete-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!