我正在尝试使用 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 插件进行测试。
最佳答案
我在使用此插件时遇到了类似的问题,当服务器响应错误时,我看到它“卡住”。
您可以尝试其他客户端,例如curl(如果您使用的是*nix)、RestClient ( http://code.fosshub.com/WizToolsorg-RESTClient/downloads ) 或您可以在线找到的其他工具。
关于java - 我使用 Jersey 生成了 400 响应,但没有得到返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388560/