栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Httpclient HttplientDelete传递JSON参数 总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Httpclient HttplientDelete传递JSON参数 总结

问题

HttpPost、HttpPut继承了HttpEntityEnclosingRequestbase类,所以有setEntity方法。

一般的 DELETE 请求参数是置于路径中的,所以一般的 httpDelete 不会像 httpPost 一样使用如下方式传递 JSON参数

HttpPost httpPost = new HttpPost(actionUrl);

StringEntity entity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);

response = httpClient.execute(httpPost);
解决方式

为了使用和 post put 类似的方式,这里我们自己定义一个 httpDelete 但也继承 HttpEntityEnclosingRequestbase 从而获得 setEntity 的方法;

类如下定义,几乎是 直接复制 httppost 的继承方式;

import org.apache.http.annotation.NotThreadSafe;
import org.apache.http.client.methods.HttpEntityEnclosingRequestbase;
import java.net.URI;


@NotThreadSafe
public class HttpDeleteWithBody extends HttpEntityEnclosingRequestbase {

    public static final String METHOD_NAME = "DELETE";

    
    @Override
    public String getMethod() {
        return METHOD_NAME;
    }

    public HttpDeleteWithBody(final String uri) {
        super();
        setURI(URI.create(uri));
    }

    public HttpDeleteWithBody(final URI uri) {
        super();
        setURI(uri);
    }

    public HttpDeleteWithBody() {
        super();
    }
}

然后在原有代码替换 httppost 即可 一般的post使用方法见最上面问题的示例代码

我们定义后的 httpdelete 替换如下:

// 上面自定义的类
HttpDeleteWithBody httpDelete = new HttpDeleteWithBody(actionUrl);

StringEntity entity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
httpDelete.setEntity(entity);

response = httpClient.execute(httpDelete);

直接替换后即可使用

HttpEntityEnclosingRequestbase 所在 Maven 依赖
        
            org.apache.httpcomponents
            httpcore
            4.4.1 
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号