这个问题在这里已经有答案了:
spring restemplate异常处理(10个答案)
5个月前关门了。
我正在使用下面的java(spring 2.0)代码从Web服务读取响应:
public ResponseEntity<?> getTemplate() {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<?> myResponse= restTemplate.postForEntity(
myUrl,
myRequestObj,
MyResponseObj.class);
return myResponse;
}
但是,如果myurl webservice返回httpstatus.bad\u请求(400),则不会将其分配给myresponse并引发错误,因此没有responsebody,我需要将请求 Package 在try-catch块中。这是对的还是有办法解决的?另外,这是否意味着myurl web服务不应该故意(以编程方式)将myresponseobj的httpstatus设置为httpstatus.bad\u请求?因此,即使myrequestobj包含坏数据,myurl webservice仍应将响应状态设置为200的ie httpstatus.no\内容中的某个内容。欢迎对如何正确执行此操作发表任何意见。
1条答案
按热度按时间kninwzqo1#
这是对的还是有办法解决的?
您描述的行为是由spring的detault错误处理程序定义的,它抛出
HttpClientErrorException
如果状态代码在400-499范围内HttpServerErrorException
如果状态代码在500-599范围内UnknownHttpStatusCodeException
如果状态代码未知。要处理此类错误代码,您可以捕获异常或注册一个自定义异常处理程序,如下所述。另外,这是否意味着myurl web服务不应该故意(以编程方式)将myresponseobj的httpstatus设置为httpstatus.bad\u请求?
根据rfc7231,状态码400用于指示服务器不能或不会处理请求,因为客户端在创建请求时出错(例如,格式错误的请求语法、无效的请求消息帧或欺骗的请求路由)。因此,您可以自由地使用该状态代码向客户端指示此类行为。