我正在尝试从后端(spring)发送一些混合数据到后端(jersey) 要发送的数据是混合的:对象、文件。 我不断收到此错误:
javax.ws.rs.ProcessingException: No available MessageBodyWriter for class "class ClassContainsAllMixedData" and media type "multipart/mixed".
这是我发送请求并等待响应的部分:
try(MultiPart multiPart = new MultiPart()) {
multiPart
.bodyPart(new BodyPart(ClassContainsAllMixedData, MediaType.APPLICATION_JSON_TYPE))
.bodyPart(
new BodyPart(file,
MediaType.APPLICATION_OCTET_STREAM_TYPE))
.bodyPart(
new BodyPart(fileInfos,
MediaType.APPLICATION_JSON_TYPE));
Response response = client.target(API_URI)
.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(multiPart, multiPart.getMediaType()));
System.out.println(response);
}catch (ProcessingException ex){
System.out.println(ex);
}
我永远无法显示响应,因为它在请求时失败。
这些是我使用的依赖项:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.6</version>
</dependency>
最佳答案
问题出在依赖版本中,我通过删除版本标签并让 pom 自动获取正确的版本(2.7)来修复它
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</dependency>
关于java - X 类没有可用的 MessageBodyWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51132267/