【问题标题】:Sending a @RequestPart List<String> as Post Request Body gives Content-Type Error发送 @RequestPart List<String> 作为 Post 请求正文会导致 Content-Type 错误
【发布时间】:2025-12-12 13:40:02
【问题描述】:

我正在尝试开发一个 POST API 请求,它接受请求作为表单数据,其中键具有字符串列表作为值。 当我通过 POSTMAN 发送请求时,它给了我错误消息“:“不支持内容类型 'application/octet-stream'”,

我尝试使用 CURL 测试 API 并且它有效,但是当我使用 Postman 传递它时,它给出了错误。

我的 API 代码:

    @PostMapping(value= "/column", produces = "application/json", consumes = {"multipart/form-data"})
    @ResponseBody
    public String searchEntIdColumn(
            @RequestPart(value = "ENT_ID") String entId,
            @ApiParam("Indices to Search; Search Default Indices or Specify a List ")
            @Nullable @RequestPart(value = "SearchIndices") List<String> searchIndices) {

        LOGGER.debug("SearchController: searchEntIdColumn() :: Search Term is : ENT_ID = {} "
                + "on searchIndices : {} ", entId, searchIndices);


        return responseBuilderService.searchColumn(searchIndices, entId);
    }

邮递员给出以下错误:

 {
    "timestamp": "2019-08-29T16:49:33.469+0000",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'application/octet-stream' not supported",
    "path": "/search/column"
}

但是当我将 SearchIndices 列表作为空/空传递时,它运行成功,但是当我传递一个列表/字符串时,它失败了

【问题讨论】:

  • 我们使用 springboot 2.1.x 和 @PostMapping(value = "/v1/rest",produces = APPLICATION_JSON_VALUE) 和 @RequestBody PreviewV1 previewRequest 并且它似乎在没有指定消耗的情况下工作
  • @KalpeshSoni 如果我使用RequestBody,如何引用表单请求正文中的键值?你能展示一些示例代码吗,我不想为我的请求正文使用一个类
  • 据我所知@RequestPart是用来上传文件的,如果你发布一个json,本质上它是java中的一个对象,你为什么不想要一个类?
  • @KalpeshSoni,是的,你说的是对的,我将其更改为请求正文而不是请求部分并完成了它。谢谢你

标签: java rest spring-boot arraylist postman


【解决方案1】:

您应该将请求中的 Content-Type 标头设置为“multipart/form-data”。正如错误清楚地表明内容类型不同。

【讨论】:

  • 我厌倦了给予,但仍然是同样的错误。当我为 SearchIndices 传递一个空列表时,它会给我数据
  • 能否请您也发布页眉选项卡的图片?