Java 如何区分承载资源(url上)的服务器是否已关闭或资源是否已关闭';返回HttpStatus代码404时不存在

Java 如何区分承载资源(url上)的服务器是否已关闭或资源是否已关闭';返回HttpStatus代码404时不存在,java,rest,spring-mvc,http-status-code-404,spring-rest,Java,Rest,Spring Mvc,Http Status Code 404,Spring Rest,使用Spring的RestTemplate.exchange(url、HTTP.GET、String.class)签名来使用url和GET-HTTP方法访问资源,我们如何区分托管资源的服务器(由url表示)是否已关闭,或者服务器是否找不到资源,因此返回了HttpStatus代码404 我希望通过重试机制来实现这一差异,如果资源不存在,我不会尝试重试。但我会在一段可配置的回退时间后重试,希望在服务器停机时服务器能够启动 我在spring源代码中引用了HTTPStatus类,并找到了对url的引用-

使用Spring的RestTemplate.exchange(url、HTTP.GET、String.class)签名来使用url和GET-HTTP方法访问资源,我们如何区分托管资源的服务器(由url表示)是否已关闭,或者服务器是否找不到资源,因此返回了HttpStatus代码404

我希望通过重试机制来实现这一差异,如果资源不存在,我不会尝试重试。但我会在一段可配置的回退时间后重试,希望在服务器停机时服务器能够启动

我在spring源代码中引用了HTTPStatus类,并找到了对url的引用-

6.5.4。404找不到 404(未找到)状态代码表示源服务器未找到 找不到目标资源的当前表示形式或该表示形式不存在 愿意透露一个人的存在。404状态代码不存在 说明缺乏代表性是暂时的还是暂时的 永久的;如果 origin server可能通过一些可配置的方式知道 这种情况可能是永久性的。 404响应在默认情况下是可缓存的;i、 e.除非另有规定 由方法定义或显式缓存控件指示(请参见 [RFC7234]第4.2.2节

我已经通读了:()和()。但是我找不到一篇文章来帮助我区分这两种情况


处理HttpClientErrorException并查看ResponseBody字段可能是一个可行的解决方案,但我觉得这可能不是正确的方法

HTTP 404状态是一个有效的响应,只有在运行中的服务器找不到所请求的资源时才能返回该响应。但是,如果服务器关闭,您的连接将被拒绝。

HTTP 404状态是一个有效的响应,只有在运行中的服务器找不到所请求的资源时才能返回。但是,如果服务器关闭,您的连接将被拒绝。

正在关闭的服务器在客户端被视为I/O错误,RestTemplate将引发ResourceAccessException

ResourceAccessException-服务器关闭时


HttpStatusCodeException—当服务器启动并返回状态代码时(4xx系列引发子类异常HttpClientErrorException,5xx系列引发子类异常HttpServerErrorException).

客户端将关闭的服务器视为I/O错误,RestTemplate将引发ResourceAccessException

ResourceAccessException-服务器关闭时


HttpStatusCodeException-当服务器启动并返回状态代码时(4xx系列引发子类异常HttpClientErrorException,5xx系列引发子类异常HttpServerErrorException)。

响应标题中应该有内容您是对的,先生,Micheal Peackok也是。正在关闭的服务器在客户端被视为I/O错误,RestTemplate将引发ResourceAccessException。ResourceAccessException-服务器关闭时。HttpStatusCodeException-服务器启动并返回状态代码时。谢谢。回复标题中应该有一些内容。你是对的,先生,迈克尔·皮科克也是。正在关闭的服务器在客户端被视为I/O错误,RestTemplate将引发ResourceAccessException。ResourceAccessException-服务器关闭时。HttpStatusCodeException-服务器启动并返回状态代码时。非常感谢。