You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用REST-Assured发送multipart form格式文件上传POST请求

REST-Assured 发送Multipart Form格式请求解决方案

错误原因排查

你的写法存在两个核心问题导致请求失败:

  • 手动指定Content-Type: multipart/form-data请求头:REST-Assured会在调用multiPart方法后自动生成带正确boundary分隔符的请求头,手动指定的头缺少boundary参数,会导致服务端无法解析报文格式
  • 混合使用formParam和multiPart方法传递参数:部分服务端的multipart解析逻辑不兼容两种参数传递方式混用的报文,普通文本键值对也需要通过multiPart方法传递

正确实现代码

你需要传递两组文本键值对+1个文件参数的话,参考以下写法:

import java.io.File;
import io.restassured.response.Response;
import static io.restassured.RestAssured.given;

public class MultipartUploadTest {
    public void uploadFile() {
        // 初始化待上传的文件对象,替换为你实际的文件路径
        File uploadFile = new File("/local/path/to/your/file.jpg");
        
        Response response = given()
                // 保留你原有HTTPS跳过校验逻辑
                .relaxedHTTPSValidation()
                // 调试时可以开启日志打印完整请求,方便排查问题
                .log().all()
                // 第一组文本键值对,替换为你实际的key和value
                .multiPart("tipo", "capital_relatorio_faturamento", "text/plain")
                // 第二组文本键值对,替换为你实际的第二个key和value
                .multiPart("yourSecondKey", "yourSecondValue", "text/plain")
                // 文件参数,第三个参数为文件对应的MIME类型,根据实际文件类型修改
                .multiPart("arquivo", uploadFile, "image/jpeg")
                .when()
                // 替换为你实际的API接口地址
                .post("https://your-api-domain.com/upload/path")
                .then()
                .extract()
                .response();
        
        // 打印返回结果调试
        System.out.println(response.asString());
    }
}

校验逻辑

你可以通过开启log().all()打印完整的请求报文,确认multipart格式的参数是否符合预期。

内容的提问来源于stack exchange,提问作者Nilton Araújo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:51:01