【问题标题】:Unable to fire a Multipart Request with RestAssured无法使用 RestAssured 触发多部分请求
【发布时间】:2018-09-06 05:34:52
【问题描述】:

我一直在尝试使用 RestAssured v2.9.0 发送多部分请求,但是它总是抛出错误。

控制器:

@RequestMapping(value = "/my-url", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
public void saveSomething(
            @RequestParam("form") MultipartFile formFields,
            @RequestParam("file") MultipartFile file,
            @AuthenticationPrincipal ...

放心通话:

given().header(HEADER_NAME, HEADER_VALUE)
        .filter(new RequestLoggingFilter())
        .multiPart(getMutliPart("{//JSON FORM FIELDS}", "form", "application/json", "blob"))
        .multiPart(getMutliPart("Test-Content-In-File", "file", "text/plain", "Test.txt"))
        .when()
        .post("my-url");

错误信息:

org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'form' is not present

放心日志:

Request method: POST
Request path:   http://localhost:50789/my-url
Proxy:          <none>
Request params: <none>
Query params:   <none>
Form params:    <none>
Path params:    <none>
Multiparts:     controlName=form, mimeType=application/json, charset=<none>, fileName=blob, content=[123, 345..blah blah]
                controlName=file, mimeType=text/plain, charset=<none>, fileName=Test.txt, content==[13, 34..blah blah]
Headers:        HEADER=VALUE
                Accept=*/*
                Content-Type=multipart/form-data
Cookies:        <none>
Body:           <none>

显然,Request params 是空白的,这就是错误的原因。

我也尝试在.parameters("form", mockMultipartFile) 中发送MockMultipartFile,但没有成功。

我在网上参考了很多东西,包括this,但问题仍然存在。任何指针表示赞赏。

【问题讨论】:

    标签: rest-assured


    【解决方案1】:

    解决了这个问题。

    RequestSpecBuilder builder = new RequestSpecBuilder();
    builder.addParam("form", "..form fields json");
    builder.addParam("file", "..file");
    RequestSpecification requestSpec = builder.build();
    
    given().header(HEADER_NAME, HEADER_VALUE)
            .filter(new RequestLoggingFilter())
            .spec(requestSpec)
            .config(RestAssured.config().encoderConfig(encoderConfig().encodeContentTypeAs("application/json;charset=UTF-8", ContentType.JSON)))
            .when()
            .post("my-url");
    

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 1970-01-01
      • 2023-02-10
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多