如何获取REST请求的请求内容类型?

3
使用JAXB实现REST-Webservice时,我们有多个方法产生输出。包含所有这些方法的类带有注释@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })。如果请求成功(没有出错),在我们的方法中返回POJO对象,而JAXB动态地将这些对象编组为application/xmlapplication/json,正如客户端通过请求头中的Accept: application/xxx;请求的那样。我的问题是如何获取所需的内容类型,因为如果出现错误,我们会抛出一个WebApplicationException,其中包含一个响应,该响应应包含自定义错误消息格式化为所请求的内容类型。
1个回答

7

你可以……

使用 @HeaderParam("Accept") 进行注入

public Response doSomething(@HeaderParam("Accept") String accept) {
    // you may need to parse it as the value is not always as
    // simple as application/json
}

您可以……

在此处插入HttpHeaders,您有几个选项。

public Response doSomething(@Context HttpHeaders headers) {
    String accept = headers.getHeaderString(HttpHeaders.ACCEPT);
    List<MediaType> acceptableType = headers.getAcceptableMediaTypes();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接