0

当我在我的服务中抛出如下WebApplicationException时,我得到一个 404 响应代码,这是我所期望的

throw new WebApplicationException(Response.Status.NOT_FOUND);

当我尝试通过ResponseBuilder在我的异常中添加更多信息时,我得到一个 500 响应代码。这是我的增强代码和我得到的响应消息:

List<Error> errors = new ArrayList<>();
errors.add(new Error(ErrorCode.PDF_GENERATION_ERROR));
ErrorResponse errResponse = new ErrorResponse();
errResponse.setErrors(errors);
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageExceptio n:Java 类 idexx.ordering.rest.common.types.ErrorRe sponse 和 Java 类型类 idexx.ordering.rest.common 的消息体编写器.types.ErrorResponse,并且未找到 MIME 媒体类型应用程序/八位字节流

我的 REST 服务具有以下方法签名:

@Produces("application/pdf")
@GET
@Path("/{id}")
public Response getPdfById(@PathParam("id") final Long id) {

无论如何,当我抛出 WebApplicationException 时,我可以在响应中获取额外的错误代码信息吗?

4

1 回答 1

0

尝试这个:

String errResponse = "convert your errors to text";
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());

可能这会起作用,因为 JAX-RS 可以转换基本类型,但要进行转换,List<Error>您需要注册一个自定义MessageBodyWriter.

于 2013-09-28T17:17:50.463 回答