我有一个基于 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/