java - 多部分/混合和应用程序/八位字节流

标签 java rest jersey jax-rs multipart

我有一个基于 Jersey 的网络服务,它产生“多部分/混合”响应,如下所示: 该方法读取文件,并应以八位字节格式返回它。

    @GET
        @Produces("multipart/mixed")
        public byte[] getDocumentContents(@Context HttpHeaders header){
    ....
    ....
    ....
    os = new ByteArrayOutputStream();
    ....
    ....
    ....
    return os;
    }

我的问题是:如何确保响应是 OCTET-STREAM 类型?我知道我也可以将上述方法注释为:

@Produces("application/octet-stream")

但我特别要求在以八位字节流格式发送文件时将响应内容类型设置为“multipart/mixed”。

上面的方法可以做到这一点吗? 我的假设是确实如此,但我没有具体的理由。

提前谢谢您!

最佳答案

我不认为“multipart/mixed”是 REST 方法返回的有效媒体类型 我认为正确的方法是:

@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getDocumentContents(@HeaderParam("your header param") final YourHeaderParamUserType headerParam) {
    byte[] outByteArray = ... obtain byte array
    return Response.ok()
           .entity(outByteArray)
           .build();
}

注意:

  • @Produces(MediaType.APPLICATION_OCTET_STREAM)
  • 您可能想要从 header 中“提取”的参数可以使用函数中的参数获取,例如:

    @HeaderParam("您的 header 参数") Final YourHeaderParamUserType headerParam

在“YourHeaderParamUserType”中您唯一不必忘记的是:

  • 包含字符串的构造函数
  • ...或包含 fromString(String) 静态方法
  • ...或包含 valueOf(String) 静态方法

关于java - 多部分/混合和应用程序/八位字节流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17994265/

相关文章:

用于获取列表大小和最后一个对象的 Java 常用实用程序

Java 从文件中读取二维数组

python - 将 PDF 文件从 Django 网站发送到 LogicalDOC

java - 如何在 JAX-RS 中为子资源中的子资源设计路径?

angular - 为在 IntelliJ 中运行的 Tomcat 启用 CORS

java - 在 JUnit 测试之间启动和停止 Jetty 服务器

java - Spring Boot JAR 不包含 src 文件夹中的类

java - Spring JTA TransactionManager 配置 : Supporting both Tomcat and JBoss

java - 为 RESTful 服务创建客户端

wordpress - 如何在我的 wordpress 网站上启用 REST API?