Tag: http status codes

Java库将HTTP状态代码映射到描述?

我正处于为webapp编写自定义错误页面的情况(主要是为了减少servlet容器的默认错误页面中的信息泄露)。 由于每个错误状态代码都需要一个错误页面,因此我必须对每个代码都有一个明智的响应。 据我所知,这些错误页面不一定非常用户友好,但只是将所有内容重定向到单个“它出错”错误页面将使诊断问题变得非常困难。 所以我想知道是否有一个Java库可以提供HTTP状态代码和简短的人类可读描述之间的良好映射(理想情况下是一个2-4字的“摘要”,用作页面标题,以及在摘要中扩展的1-3句话消息)。 然后我可以在JSP中使用它来提供有关错误类的一些反馈。 如果不是,我敢肯定我自己可以写一个,但如果发明了轮子,我很乐意使用它们。

如何从RestTemplate调用URL中提取HTTP状态代码?

我正在使用RestTemplate对我们的服务进行HTTP调用,该服务返回一个简单的JSON响应。 我根本不需要解析那个JSON。 我只需要返回我从该服务中获得的任何内容。 所以我将它映射到String.class并将实际的JSON response作为字符串返回。 RestTemplate restTemplate = new RestTemplate(); String response = restTemplate.getForObject(url, String.class); return response; 现在的问题是 – 我试图在点击URL后提取HTTP Status codes 。 如何从上面的代码中提取HTTP状态代码? 我是否需要以当前的方式对其进行任何更改? 更新: – 这是我尝试过的,我能够得到回复和状态代码。 但是我总是需要像下面那样设置HttpHeaders和Entity对象吗? RestTemplate restTemplate = new RestTemplate(); //and do I need this JSON media type for my use case? HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); //set my entity […]

如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException?

我正在使用java.net.HttpUrlConnection向我的服务器发出Http请求。 我意识到如果服务器返回错误状态(例如400)。 HttpUrlConnection将抛出与错误状态对应的IOException。 我的问题是: 如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException? 我看一下HttpUrlConnection API描述,但我无法回答我的问题。 更新:请参阅我的测试: public static void main(String[] args) { try { String url = “https://www.googleapis.com/oauth2/v3/userinfo?access_token=___fake_token”; HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection(); conn.getResponseCode(); conn.getInputStream(); } catch (Exception ex) { ex.printStackTrace(); // Print IOException: java.io.IOException: Server returned HTTP response code: 401 for URL: https://www.googleapis.com/oauth2/v3/userinfo?access_token=abc // If I commented conn.getResponseCode() -> The same IOException […]

在找不到REST资源时返回404是否正确?

假设我有一个简单的Jersey REST资源,如下所示: @Path(“/foos”) public class MyRestlet extends BaseRestlet { @GET @Path(“/{fooId}”) @Produces(MediaType.APPLICATION_XML) public Response getFoo(@PathParam(“fooId”) final String fooId) throws IOException, ParseException { final Foo foo = fooService.getFoo(fooId); if (foo != null) { return Response.status(Response.Status.OK).entity(foo).build(); } else { return Response.status(Response.Status.NOT_FOUND).build(); } } } 基于上面的代码,返回NOT_FOUND状态( 404 )是否正确,或者我应该返回204 ,还是其他一些更合适的代码? 提前谢谢了!