multipart / mixed和application / octet-stream

时间:2013-08-01 12:36:23

标签: java rest jersey jax-rs multipart

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

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

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

@Produces("application/octet-stream")

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

上述方法是否可以这样做? 我的假设是,但我没有具体的理由。

提前谢谢你!

1 个答案:

答案 0 :(得分: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)静态方法