2

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

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

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

@Produces("application/octet-stream")

但是我特别需要在以八位字节流格式发送文件时将响应内容类型设置为“多部分/混合”。

上面的方法能做到吗?我的假设是确实如此,但我没有具体的理由说明如何。

先感谢您!

4

1 回答 1

2

我不认为“多部分/混合”是 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) 静态方法
于 2013-08-01T18:55:16.007 回答