首页 > 数据库 > 数据库开发技术 > httpclient上传文件方法的封装
本人使用 httpclient 进行接口测试的过程中,遇到了上传文件的接口,之前的文章已经完成了二进制流上传图片的代码,但是还没有封装成固定的使用方法,今天分享一下封装后的方法,供大家参考。
1/**
2 * 设置二进制流实体,params 里面参数值为 file
3 *
4 * @param httpPost
5 * httpPsot 请求
6 * @param params
7 * 请求参数
8 * @param file
9 * 文件
10 */
11 public void setMultipartEntityEntity(HttpPost httpPost, JSONObject params, File file) {
12 String fileName = getFileName(file);
13 InputStream inputStream = null;
14 try {
15 inputStream = new FileInputStream(file);
16 } catch (FileNotFoundException e) {
17 e.printStackTrace();
18 }
19 Iterator<String> keys = params.keys();// 遍历 params 参数和值
20 MultipartEntityBuilder builder = MultipartEntityBuilder.create();// 新建builder对象
21 while (keys.hasNext()) {
22 String key = keys.next();
23 String value = params.getString(key);
24 if (value.equals("file")) {
25 builder.addBinaryBody(key, inputStream, ContentType.create("multipart/form-data"), fileName);// 设置流参数
26 } else {
27 StringBody body = new StringBody(value, ContentType.create("text/plain", Consts.UTF_8));// 设置普通参数
28 builder.addPart(key, body);
29 }
30 }
31 HttpEntity entity = builder.build();// 生成entity
32 httpPost.setEntity(entity);// 设置 entity
33 }
此方法仅针对 Linux 系统,因为 Windows 系统在文件路径中用的“\”,在代码里是“\”所以 Windows 系统的朋友得注意力。
原文作者:FunTester;如有侵权,请联系管理员删除。