如何在 RestAssured 中发送 POST 和 form-data in Body 设置 multipart 与特定 content-type

How to send a POST with form-data in Body in RestAssured setting multipart with a specific content-type

尝试在 RestAssured Body 中使用 form-data 发送 POST 请求,但不确定应该怎么做。 在 Postman 里,没问题。

我试过类似的东西:

public Response create() {
    return super
            .given()
            .contentType("multipart/form-data")
            .multiPart("MetaDataOne", new File("file.txt"))
            .multiPart("MetaDataTwo", new File("file2.txt"))
            .basePath("/create")
            .log().all()
            .post()
            .then()
            .log().all()
            .extract()
            .response();
}

但我的文件似乎没有在请求中发送。

控制台日志

多部分

{“错误”:415,“描述”:不支持内容类型application/octet-stream}

Headers

使用 RESTFull 网络服务非常简单 Api,只需按照以下简单步骤操作即可

步骤 1:创建指向服务的请求对象

RestAssured.baseURI ="https://myhost.com/xyz";
RequestSpecification request = RestAssured.given();

第 2 步:创建一个包含所有表单字段的 JSON 对象

JSONObject jsonObject = new JSONObject();
jsonObject.put("Form_Field_1", "Input Value 1"); 
jsonObject.put("Form_Field_2", "Input Value 2");
jsonObject.put("Form_Field_3", "Input Value 3");
jsonObject.put("Form_Field_4", "Input Value 4");

第三步:在请求体中添加JSON对象并发送Request

request.header("Content-Type", "application/json");
request.body(jsonObject.toJSONString());

Post请求并检查响应

Response response = request.post("/register");

第 4 步:验证响应

int statusCode = response.getStatusCode();

你能试试这个吗,这应该将 Content-Type 覆盖为 multipart/form-data 而不是 application/octet-stream

given().contentType("multipart/form-data").multiPart("MetaDataOne", new File("file.txt"), "multipart/form-data")
                .multiPart("MetaDataTwo", new File("file2.txt"), "multipart/form-data").basePath("/create").log().all()
                .post().then().log().all().extract().response();