「原创声明:保留所有权利,禁止转载」
本人使用 httpclient 进行接口测试的过程中,遇到了上传文件的接口,之前的文章已经完成了二进制流上传图片的代码,但是还没有封装成固定的使用方法,今天分享一下封装后的方法,供大家参考。
/**
* 设置二进制流实体,params 里面参数值为 file
*
* @param httpPost
* httpPsot 请求
* @param params
* 请求参数
* @param file
* 文件
*/
public void setMultipartEntityEntity(HttpPost httpPost, JSONObject params, File file) {
String fileName = getFileName(file);
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Iterator<String> keys = params.keys();// 遍历 params 参数和值
MultipartEntityBuilder builder = MultipartEntityBuilder.create();// 新建builder对象
while (keys.hasNext()) {
String key = keys.next();
String value = params.getString(key);
if (value.equals("file")) {
builder.addBinaryBody(key, inputStream, ContentType.create("multipart/form-data"), fileName);// 设置流参数
} else {
StringBody body = new StringBody(value, ContentType.create("text/plain", Consts.UTF_8));// 设置普通参数
builder.addPart(key, body);
}
}
HttpEntity entity = builder.build();// 生成entity
httpPost.setEntity(entity);// 设置 entity
}
此方法仅针对 Linux 系统,因为 Windows 系统在文件路径中用的 “\”,在代码里是 “\” 所以 Windows 系统的朋友得注意力。
技术类文章精选
- java 一行代码打印心形
- Linux 性能监控软件 netdata 中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在 Linux 命令行界面愉快进行性能测试
- 图解 HTTP 脑图
- 将 swagger 文档自动变成测试代码
- 五行代码构建静态博客
- 基于 java 的直线型接口测试框架初探
- python plotly 处理接口性能测试数据方法封装
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 自动化测试的障碍
- 自动化测试的问题所在
- 成为优秀自动化测试工程师的 7 个步骤
- 未来 10 年软件测试的新趋势 - 上
- 未来 10 年软件测试的新趋势 - 上
- 17 种软件测试人员常用的高效技能 - 上
- 17 种软件测试人员常用的高效技能 - 下
大咖风采
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!