gpt4 book ai didi

java - 使用 Jersey 在多部分响应中返回图像和 JSON

转载 作者:行者123 更新时间:2023-11-29 04:47:50 25 4
gpt4 key购买 nike

我正在通过尝试创建一个 Rest 服务来学习 Jersey,该服务从客户端接收图像、处理图像并返回带有附加信息(即关于处理细节)的新图像。

到目前为止,上传工作正常。我现在关心的是创建响应。我正在考虑创建一个多部分响应,其中在 1 个正文部分中包含新图像,同时将 JSON 字符串(包含附加信息)添加到另一个正文部分中。但是我没有成功。代码如下:

        File image = process(oldImage);
Info info = getInfo();
String jsonStr = toJson(info);

MimeMultipart multiPart = new MimeMultipart();

MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setContent(Files.readAllBytes(image.toPath()), MediaType.APPLICATION_OCTET_STREAM);

MimeBodyPart jsonPart = new MimeBodyPart();
jsonPart.setContent(jsonStr, MediaType.APPLICATION_JSON);

multiPart.addBodyPart(imagePart);
multiPart.addBodyPart(jsonPart);
return Response.ok(multiPart, "multipart/mixed").build();

我收到如下错误信息:

MessageBodyWriter not found for media type=multipart/mixed, type=class com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart, genericType=class com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.

我一直在寻找一段时间,但无论如何都没有找到修复它的方法。如果您能帮助指出代码的问题以及解决此问题的好方法,那就太好了。

最佳答案

我认为 com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart 不是您想要的类。

Jersey 2.x

对于 Jersey 2.x,使用 MultiPart来自 org.glassfish.jersey.media.multipart 的类(class)包。

要使用多部分功能,您需要添加 jersey-media-multipart模块到您的 pom.xml 文件:

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.22.2</version>
</dependency>

不要忘记注册 MultiPartFeature :

final Application application = new ResourceConfig()
.packages("org.glassfish.jersey.examples.multipart")
.register(MultiPartFeature.class)

Jersey GitHub 上有一个多部分请求的例子 repository .

有关更多详细信息,请查看 Jersey 2.x documentation .

Jersey 1.x

对于旧版 Jersey 1.x,您可以使用 MultiPart来自 com.sun.jersey.multipart 的类(class)包。

jersey-multipart依赖是必要的:

<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.19.1</version>
</dependency>

关于java - 使用 Jersey 在多部分响应中返回图像和 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36451073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com