当前位置: 首页 > 知识库问答 >
问题:

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

况景龙
2023-03-14

我正在使用文件名中确实包含西里尔字符的文件向endpoint发送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代码时,我可以看到在上面的例子中,content-disposition头带有西里尔字母,并用问号替换:表单数据;name=“file”;filename=“???????.mp3”

当我和邮递员打同样的电话时,它工作得很好。我看到的放心呼叫和邮差呼叫之间的唯一区别是内容处置头。

有什么想法需要调整的放心配置?

共有1个答案

薛霄
2023-03-14

通过查看此处记录的“放心”问题,我找到了答案。

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

.config(RestAssuredConfig.config().httpClient(HttpClientConfig.httpClientConfig().httpMultipartMode(HttpMultipartMode.BROWSER_COMPATIBLE))
 类似资料:
  • 我需要发送一个视频文件和JSON对象在放心的post调用。 我不能在放心地使用multipart时使用application/json。我显式地硬编码了表单param中的值,并以multipart的形式发送了媒体文件,现在它工作得很好。 如何在单个内部对象中发送所有表单参数数据。

  • 问题内容: 我已经使用pg_dump创建了一个sql dump文件。此导出文件包含包含$$字符的函数。使用psql -f <文件名>导入文件没有问题。 如果要使用SQLExec任务使用ant导入文件,则会出现类似以下的异常: 有没有办法导入包含$$的文件? 在postgres日志中,SQLExec任务似乎将$$转换为$,从而导致错误。 错误:字符87处“ $”处或附近的语法错误语句:CREATE

  • 我正在尝试向S3发出上传请求,以便上传一个文件。在我目前掌握的最可靠的代码下面, 我总是从服务器收到400(错误请求)。我不确定我是否正确使用了多部分上传。 但是当我使用像POSTMAN这样的任何Rest客户端做同样的事情时,它工作得很好, 这将是有帮助的,如果有人可以抛出一些光在多部分上传放心。 我已经查看了以下链接, 放心文档 放心的示例 编辑1: 我试着将上面的邮递员请求转换成curl,并用

  • 问题内容: 我正在开发一个小项目,因此我想使用国际化。问题是,当我尝试使用带有西里尔文符号的.properties文件时,文本显示为垃圾。当我对字符串进行硬编码时,它会很好地显示。 这是我的代码: 在我的.properties文件中: 退出=Изход 而且我得到垃圾。当我尝试 正确显示。据我所知,UTF-8是用于文件的编码。 有任何想法吗? 问题答案: AnyEdit是一个eclipse插件,可

  • 问题内容: 我有多个包含不同类型的txt文件的zip文件。如下所示: 如何使用pandas读取每个文件而不提取它们? 我知道每个zip文件是否为1个文件,我可以对read_csv使用压缩方法,如下所示: 任何有关如何执行此操作的帮助都将非常有用。 问题答案: 你可以传递到构建从包装成一个多文件一个CSV文件。 码: 将所有内容读入字典的示例:

  • 问题内容: 我正在尝试通过Linux CLI在文件中查找电子邮件地址的基础上删除错误的电子邮件。 我可以用 但是我无法弄清楚如何从那里删除它们,因为以下代码不起作用。 谢谢您的帮助。 问题答案: 为了安全起见,我通常将find的输出通过管道传送到awk之类的文件,并创建一个批处理文件,每行均为“ rm filename” 这样,您可以在实际运行它之前对其进行检查,并手动修复用正则表达式难以处理的任