IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Httpclient HttplientDelete传递JSON参数 总结 -> 正文阅读

[开发测试]Httpclient HttplientDelete传递JSON参数 总结

问题

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

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

HttpPost httpPost = new HttpPost(actionUrl);
/*
其他代码

jsonBody 为你的 JSON 参数
*/
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;

/**
 * DELETE 使用请求体
 */
@NotThreadSafe
public class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {

    public static final String METHOD_NAME = "DELETE";

    /**
     * 获取方法(必须重载)
     *
     * @return
     */
    @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);
/*
其他代码
其他 例如设置头信息,设置请求配置参数等等 无需修改,对象替换为  第一句定义的即可
jsonBody 为你的 JSON 参数
*/
StringEntity entity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
httpDelete.setEntity(entity);

response = httpClient.execute(httpDelete);

直接替换后即可使用

HttpEntityEnclosingRequestBase 所在 Maven 依赖

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.1</version> <!-- 版本可自己更换 -->
        </dependency>
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:52:24  更:2022-03-08 22:52:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:55:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码