FunTester 使用 httpclient 上传文件方法的封装

FunTester · 2020年03月31日 · 最后由 FunTester 回复于 2020年03月31日 · 2794 次阅读

本人使用 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 系统的朋友得注意力。

技术类文章精选

非技术文章精选

大咖风采

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

看了你几篇文章,广告比内容多。。。

恒温 回复

ok 接下来注意

  • 以下内容个人想法
    • 作为一个不写 java 的人: 看不懂
    • 作为一个 java 高手: 这个实现了功能,没啥收获
    • 作为一个 java 低手: 这个咋实现的啊,用了啥模式设计么?好像也没有啊
  • 最后,点开就关掉。
  • 对于没亮点只贴代码的帖子, 我觉得不如不发。这就是开发平时写的业务代码,不评审的话,没人看
hellohell 回复

这个是 httpclient 上传文件方法的封装,主要用来做接口测试的。第二点说的挺对,文章写的早,以后写文章我注意。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册