如何为Http Delete方法设置RequestBody。
问题描述:
我正在为删除API的服务器编写客户端代码。 API规范要求发送数据。我正在使用HttpComponents v3.1库来编写客户端代码。使用HtpDelete类,我找不到向其添加请求数据的方法。有没有办法做到这一点?以下是代码片段。如何为Http Delete方法设置RequestBody。
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);
}
在此先感谢。
答
我还没有尝试过这个,它和地狱一样疯狂,如果事实证明有更好的解决方案,我会感到更高兴,但是您可能会尝试扩展PostMetod并重写getName()方法以返回“DELETE” 。
答
为什么不能做到这一点:-)
class MyHttpDelete extends HttpPost{
@Override
public String getMethod() {
return "DELETE";
}
}
出于好奇:什么API是什么? (需要一个DELETE请求体) – 2012-04-10 20:09:53
它是一个自定义的第三方REST API。 :) – 2012-04-10 21:05:17