【问题标题】:multipart/mixed and application/octet-stream多部分/混合和应用程序/八位字节流
【发布时间】:2013-08-01 12:36:23
【问题描述】:

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

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

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

@Produces("application/octet-stream")

但我特别需要在以八位字节流格式发送文件时将 RE​​SPONSE content-Type 设置为“multipart/mixed”。

上面的方法能做到吗? 我的假设是确实如此,但我没有具体的原因。

提前谢谢你!

【问题讨论】:

    标签: java rest jersey jax-rs multipart


    【解决方案1】:

    我认为“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)
    • 您可能想要从标题中“提取”的参数可以使用函数中的参数获取,例如:

      @HeaderParam("你的头参数") final YourHeaderParamUserType headerParam

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 2011-06-15
      • 2017-10-21
      相关资源
      最近更新 更多