Уверенный POST-вызов с составным файлом, который содержит символы кириллицы c в имени файла - PullRequest
0 голосов
/ 17 января 2020

Я отправляю POST-вызов конечной точке с файлом, в имени которого есть кириллицы c символов. Я пытался установить кодировку 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, я вижу, что в приведенном выше случае заголовок размещения содержимого поставляется с Cyrilli c символы заменены на вопросительный знак: form-data; name="file"; filename="??????.mp3".

Когда я делаю тот же звонок с почтальоном, он работает просто отлично. Единственное отличие, которое я вижу между звонком с уверенностью и почтальоном, - это заголовок размещения контента.

Есть идеи, что нужно настроить для уверенной конфигурации?

1 Ответ

0 голосов
/ 18 января 2020

Я нашел ответ, посмотрев на зарегистрированную гарантированную проблему здесь .

Мне просто нужно было убедиться, что я не использую режим STRICT (по умолчанию):

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