如何使用json内容返回Jersey中的Response 401

时间:2014-01-31 23:20:04

标签: jersey jax-rs

我试图在我的一个REST方法中使用json内容返回UNAUTHORIZED响应。我在使用Jersey 2.5.1和Spring。

我在我的方法上使用以下注释:

@Path("login")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response myMethod(@Valid CmdObject cmd) {
  ...
  return Response.status(Response.Status.UNAUTHORIZED).entity(AUTHENTICATION_ERROR_MSG).build();
}

如果AUTHENTICATION_ERROR_MSG只是一个字符串,例如“身份验证问题”,一切都很好并且返回一个响应,但它只是字符串内容。

如果我用某个Object替换AUTHENTICATION_ERROR_MSG,则返回500 Http错误。

有什么建议可能出错吗?

1 个答案:

答案 0 :(得分:0)

当服务器返回错误500时,它返回什么错误消息?

您是否已经有其他正确返回JSON的方法?

请注意,您需要添加一个库,使Jersey能够将对象转换为JSON。否则,它无法将对象转换为JSON。

根据Jersey's user guide,执行此操作的首选库是MOXy。如果您想使用它,请将以下内容添加到项目的pom.xml

<dependency>
  <groupId>org.glassfish.jersey.media</groupId>
  <artifactId>jersey-media-moxy</artifactId>
</dependency>