java中使HttpDelete可以發送body信息


java中使HttpDelete可以發送body信息
RESTful api中用到了DELETE方法,android開發的同事遇到了問題,使用HttpDelete執行DELETE操作的時候,不能攜帶body信息,研究了很久之后找到了解決方法。 我們查看httpclient-4.2.3的源碼可以發現,methods包下面包含HttpGet, HttpPost, HttpPut, HttpDelete等類來實現http的常用操作。 其中,HttpPost繼承自HttpEntityEnclosingRequestBase,HttpEntityEnclosingRequestBase類又實現了HttpEntityEnclosingRequest接口,實現了setEntity的方法。 而HttpDelete繼承自HttpRequestBase,沒有實現setEntity的方法,因此無法設置HttpEntity對象。 這樣解決方法就明顯了,我們可以自己實現一個MyHttpDelete類,繼承自HttpEntityEnclosingRequestBase,覆蓋其中的getMethod方法,使其返回“DELETE”。
public class MyHttpDelete extends HttpEntityEnclosingRequestBase {
public static final String METHOD_NAME = "DELETE";
public String getMethod() {
return METHOD_NAME;
}
public MyHttpDelete(final String uri) {
super();
setURI(URI.create(uri));
}
public MyHttpDelete(final URI uri) {
super();
setURI(uri);
}
public MyHttpDelete() {
super();
}
}
使用delete方法時,直接可以按下面方式操作
DefaultHttpClient httpClient = new DefaultHttpClient();
MyHttpDelete delete = new MyHttpDelete("http://url.com");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
delete.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(delete);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM