如何为Http Delete方法设置RequestBody。

时间:2012-04-10 17:28:19

标签: http httpclient apache-httpcomponents http-delete

我正在编写一个删除API的服务器的客户端代码。 API规范要求发送数据。我正在使用HttpComponents v3.1库来编写客户端代码。使用HtpDelete类我无法找到向其添加请求数据的方法。有办法吗?以下是代码段。

        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);
    }

提前致谢。

2 个答案:

答案 0 :(得分:10)

为什么不这样做: - )

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

答案 1 :(得分:8)

我没有尝试过这个问题,而且如果事实证明有更好的解决方案,那我就会感到更加快乐,但你可能会尝试扩展PostMetod并覆盖getName()方法以返回“DELETE”。