zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    【2019-08-03】自卑和悲观是有区别的
    你现在不用写代码了吧?
    【2019-08-02】信任是一种能力
    【2019-08-01】给孩子一个渴望长大的榜样
    【一句日历】2019年8月
    【2019-07-31】一切皆有寓意
    【2019-07-30】原来努力会上瘾
    【2019-07-29】睡多了,会被宰的
    【2019-07-28】活到老,学到老
    【2019-07-27】习惯的力量很强大
  • 原文地址:https://www.cnblogs.com/jing1617/p/6374401.html
Copyright © 2011-2022 走看看