2012-04-10 200 views
4

我正在为删除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); 
    } 

在此先感谢。

+0

出于好奇:什么API是什么? (需要一个DELETE请求体) – 2012-04-10 20:09:53

+0

它是一个自定义的第三方REST API。 :) – 2012-04-10 21:05:17

回答

7

我还没有尝试过这个,它和地狱一样疯狂,如果事实证明有更好的解决方案,我会感到更高兴,但是您可能会尝试扩展PostMetod并重写getName()方法以返回“DELETE” 。

9

为什么不能做到这一点:-)

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