415 Content-Type = Mulitpart / form-data不支持的MediaType

时间:2018-04-16 11:50:46

标签: java rest soapui jersey-client

我有一个REST API,只有 @Produces(MediaType.APPLICATION_JSON) ,而且 @Consume 任何MediaType。

即使我通过创建 HTTP请求来使用此REST API,其中 MediaType 被设置为 multipart / form-data ,我还在接受:

  

HTTP / 1.1 415不支持的媒体类型

原始 HTTP响应

但是,当我将 Content-Type 设置为 application / json 时,此REST API @Produces ,我正在获得正确的 HTTP响应

以下是 REST API注释:

@POST
@Path("/somePath")
@Produces(MediaType.APPLICATION_JSON)
public JSONObject addDocument(AddDocBean addDocBean) {
...
  

“现在为什么我要将内容类型发送为 Multipart / form-data ?”

这是因为我使用此服务将文件上传到服务器,文件将以 BASE64 格式发送。 现在文件的大小约为 20Mb ,我建议最好将其作为 multipart / form-data

发送

但HTTP服务器无法处理此请求,并在响应中返回 ERROR 415 Unsupported MediaType

正在使用的REST客户端: SoapUI 5.4.0

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

  • 服务器端的@Produces对应于客户端的Accept:Header。
  • 服务器端的@Consume对应于客户端的Media-Type:Header。

您展示的API代码段并未指定任何明确的 @Consume 注释,因此默认为plain / text。因此,当您使用您的请求发送应用程序/多部分的标题时,您将获得不支持的媒体类型

您需要添加一个明确的 @Consume(" MediaType.MULTIPART_FORM_DATA") //与您的API类似的内容,使您的addDocument()方法支持您发送的表单数据。