我用Jersey生成400响应,但我没有得到它返回

时间:2016-05-23 10:27:51

标签: java rest jersey

我正在尝试使用java和jersey编写Web服务。最近我注意到,有时,在创建错误400响应后,我不会从服务器返回任何内容。

例如,使用此函数,我得到一个201代码没有问题,但当我尝试获得400响应时,我等待响应,直到我超时。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
public Response registerUser(String json) {
    Gson gson = new Gson();
    try {
        RegistryData r = gson.fromJson(json, RegistryData.class);
        new RegisterValidator().validate(r);
        // new UserDao().addUser(new User(r));
        return Response.ok(gson.toJson(r), MediaType.APPLICATION_JSON).status(Status.CREATED).build();
    } catch (JsonSyntaxException e) {
        e.printStackTrace();
        return Response.status(Status.BAD_REQUEST).entity("ERROR: BAD REQUEST").build();
    } catch (ValidationException e) {
        return Response.status(Response.Status.BAD_REQUEST).entity("ERROR: " + e.getMessage())
                .type(MediaType.TEXT_PLAIN).build();
    }
}

我正在使用Tomcat 7,Java 7,Jersey 1.19,我正在使用适用于Chrome的Advanced Rest Client插件进行测试。

1 个答案:

答案 0 :(得分:1)

我遇到过与此插件类似的问题,当服务器响应错误时,它会“卡住”。

您可以尝试其他客户端,例如curl(如果您使用的是* nix),RestClient(http://code.fosshub.com/WizToolsorg-RESTClient/downloads)或其他可以在线找到的工具。