何时引发HttpStatusCodeException异常?

时间:2017-12-20 13:59:52

标签: java spring rest httpexception

当我使用下面的代码时,获得HttpStatusCodeException异常的情况是什么。

ResponseEntity<Object> response = 
  restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, Object.class);

请任何人帮帮忙????????

3 个答案:

答案 0 :(得分:5)

根据文档,HttpStatusCodeException HttpClientErrorExceptionHttpServerErrorException有两种类型。

  • 收到HTTP 4xx时抛出前者。
  • 收到HTTP 5xx时抛出后者。

所以你可以使用ResponseEntity.BodyBuilder.status(505)在你的

中引发HttpServerErrorException

答案 1 :(得分:1)

HTTP状态代码是来自服务器的响应,因此如果您拥有对服务器的控制权,那么您可以让它返回您想要的任何错误。如果您无法控制服务器,则可以尝试发送错误/无效请求,以便服务器发出抱怨。

服务器端有这样的东西:

@RequestMapping(method = RequestMethod.GET)
public ResponseEntity getAnError() {
    // complain!
    return ResponseEntity.status(HttpStatus.FORBIDDEN);
}

答案 2 :(得分:1)

在Spring-Web库的org.springframework.web.client.RestTemplate中添加了3.1.0.RELEASE类的

exhange(...)方法。

此方法抛出RestClientException,该错误覆盖了客户端(4_xx)和服务器(5_xx)端的HTTP代码错误。但是RestClientException不提供getStatusCode(), getResponseAsString()等方法。

  1. HttpsStatusCodeExceptionRestClientException的子级,它正在执行相同的操作,但具有诸如getStatusCode(), getResponseAsString()等的其他方法。

  2. HttpClientErrorException的子节点HttpsStatusCodeException,仅接受客户端错误(4_xx),而不是服务器错误。

  3. HttpServerErrorException的子节点HttpsStatusCodeException,仅接受服务器错误(5_xx),而不是客户端错误。