我在tomcat日志中看到以下错误...
错误c.s.j.spi.container.ContainerRequest - 一个消息正文阅读器 Java类com.sun.jersey.multipart.FormDataMultiPart和Java类型 class com.sun.jersey.multipart.FormDataMultiPart和MIME媒体类型 找不到multipart / form-data。注册邮件正文读者 与MIME媒体类型兼容的是: / - > com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider $一般 com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider $ StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider $ SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider $ DOMSourceReader com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider $一般 com.sun.jersey.json.impl.provider.entity.JSONArrayProvider $一般
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider $一般
com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider $一般 com.sun.jersey.core.impl.provider.entity.XMLListElementProvider $一般 com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider $一般 com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider $一般 com.sun.jersey.json.impl.provider.entity.JSONListElementProvider $常规
在客户端,我看到以下消息:
POST https://dev.project.org/upload返回的响应状态为415 不支持的媒体类型。
我已经google了,建议是需要jersey-multipart.jar和mimepull.jar作为依赖项。我在build.gradle中有以下依赖:
编译'com.sun.jersey.contribs:jersey-multipart:1.18'
在tomcat(Apache Tomcat / 7.0.47)上打包和部署应用程序后,我看到 jersey-multipart-1.18.jar 和 mimepull-1.9.3.jar 位于 app / WEB-INF / lib 文件夹中。
以下是我的服务器端代码:
@POST
@Consumes("multipart/form-data")
@Path("/v2/upload")
public Response uploadV2(FormDataMultiPart multipart) {
logger.info("**POST /v2/upload");
return Response.ok("success!").build();
}
我在服务器端和客户端仍然遇到相同的错误。任何帮助表示赞赏。 感谢。
答案 0 :(得分:4)
你只需要将mimepull.jar添加到你的lib
或与Maven
<dependency>
<groupId>org.jvnet.mimepull</groupId>
<artifactId>mimepull</artifactId>
<version>1.9.5</version>
</dependency>
答案 1 :(得分:0)
我也得到了同样的行为,收到了415 Unsupported Media Type的回复。如果我的输入参数是一个String,我可以点击路径。一旦我将param更改为FormDataMultiPart,我就会得到415.为我解决的问题是确保我的com.sun.jersey包的版本相同。
使用maven:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.18.1</version>
</dependency>
jersey-multipart的任何不匹配都会给我提到上述行为。