【发布时间】:2014-01-02 13:37:13
【问题描述】:
我在下面有这个宁静的网络服务代码。但是当访问网络服务时,我得到“找不到 MIME 媒体类型应用程序/pdf”。 docService.findByVersionId 确实返回一个“TestDoc”,它将 pdf 内容保存为 byte[]。
你能帮我解决这个问题吗?
@GET
@Path("/getPdf/{versionId}")
@Produces("application/pdf")
public Response getPdfFile(@PathParam("versionId") final String versionId) {
try {
final TestDoc doc = this.docService.findByVersionId(versionId);
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final BufferedOutputStream bos = new BufferedOutputStream(byteArrayOutputStream);
final byte[] pdfContent = doc.getPdfDoc();
bos.write(pdfContent);
bos.flush();
bos.close();
return Response.ok(byteArrayOutputStream).build();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
错误:
Exception:
2014-01-02 12:42:07,497 ERROR [STDERR] 02-Jan-2014 12:42:07 com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java class java.io.ByteArrayOutputStream, and Java type class java.io.ByteArrayOutputStream, and MIME media type application/pdf was not found
【问题讨论】:
-
我可以在您的 rest-client 上查看代码还是您使用浏览器访问此 pdf api?在一般情况下,根据我的经验,rest-client(无论您使用什么客户端)都无法反序列化响应,因为您可能忘记提及响应的类型(在本例中为 application/pdf)。让我们讨论一下更多,一旦你用你的休息客户端代码(如果有的话)更新问题
-
您可能也想看看这里。这应该回答你的问题:stackoverflow.com/a/3503704/3066911
-
您找到解决方案了吗?
标签: web-services rest pdf