本人使用 httpclient 进行接口测试的过程当中,遇到了上传文件的接口,以前的文章已经完成了二进制流上传图片的代码,可是尚未封装成固定的使用方法,今天分享一下封装后的方法,供你们参考。java
/** * 设置二进制流实体,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 系统的朋友得注意力。python