java - 使用文件名中包含西里尔字符的多部分文件进行放心的 POST 调用

标签 java rest-assured

我正在将 POST 调用发送到文件名中包含西里尔字符的文件的端点。我已经尝试在我知道的每个地方将编码设置为 UTF-8。

RestAssured.config = RestAssured.config()
        .encoderConfig(encoderConfig().defaultContentCharset("UTF-8"))
        .encoderConfig(encoderConfig().defaultCharsetForContentType("UTF-8", "multipart/form-data"))
        .multiPartConfig(multiPartConfig().defaultCharset("UTF-8"))
        .decoderConfig(decoderConfig().defaultContentCharset("UTF-8"))
        .decoderConfig(decoderConfig().defaultCharsetForContentType("UTF-8", "multipart/form-data"));

RequestSpecification rs = given()
        .baseUri(baseUrl)
        .header("Content-Type", "multipart/form-data")
        .header(getAuthHeader())
        .config(RestAssured.config)
        .multiPart(
                new MultiPartSpecBuilder(file)
                        .controlName("file")
                        .mimeType("audio/mpeg")
                        .fileName(file.getName())
                        .charset("UTF-8")
                        .build()
        )
        .multiPart(
                new MultiPartSpecBuilder(categoryId)
                        .controlName("categoryId")
                        .build()
        )
        .multiPart(
                new MultiPartSpecBuilder(fileTitle)
                        .charset(Charsets.UTF_8)
                        .controlName("fileTitle")
                        .build()
        )
        .log().everything();

rs
    .when()
        .post(FilePaths.add.value)
    .then()
        .log().everything()
        .statusCode(201)
        .contentType(ContentType.JSON);

当我调试 API 代码时,我可以看到在上面的情况下,内容处置 header 带有用问号替换的西里尔字符: form-data;名称="file";文件名=“??????.mp3”

当我与 Postman 进行相同的调用时,它工作得很好。我发现放心调用和 Postman 调用之间的唯一区别是内容处置 header 。

知道需要调整哪些内容才能获得放心的配置吗?

最佳答案

我通过查看记录的放心问题找到了答案 here .

我只需确保我没有使用 STRICT 模式(这是默认模式):

.config(RestAssuredConfig.config().httpClient(HttpClientConfig.httpClientConfig().httpMultipartMode(HttpMultipartMode.BROWSER_COMPATIBLE))

关于java - 使用文件名中包含西里尔字符的多部分文件进行放心的 POST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59780811/

相关文章:

java - 放心 - 将响应 JSON 反序列化为 List<POJO>

java - 在 RestAssured (Java) 中将 JSON 文件转换为字符串

java - 如何确定 OSX 硬件类型?

java - AEM-视觉 : data-sly-attribute erasing css on tag

java - 在Restured Automation中下载ZIP文件

pom.xml - 放心进口没有解决

java - 放心 - 如何放心地解析数组元素

java,评估 URL 而不是 File 的广泛使用

java - 如何将 JSON 的每条记录放在单独的行上?

java - 使用泛型实现抽象类中的公共(public)方法