rest模板try-catch

1wnzp6jl  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(370)

这个问题在这里已经有答案了

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\内容中的某个内容。欢迎对如何正确执行此操作发表任何意见。

kninwzqo

kninwzqo1#

这是对的还是有办法解决的?
您描述的行为是由spring的detault错误处理程序定义的,它抛出 HttpClientErrorException 如果状态代码在400-499范围内 HttpServerErrorException 如果状态代码在500-599范围内 UnknownHttpStatusCodeException 如果状态代码未知。要处理此类错误代码,您可以捕获异常或注册一个自定义异常处理程序,如下所述。
另外,这是否意味着myurl web服务不应该故意(以编程方式)将myresponseobj的httpstatus设置为httpstatus.bad\u请求?
根据rfc7231,状态码400用于指示服务器不能或不会处理请求,因为客户端在创建请求时出错(例如,格式错误的请求语法、无效的请求消息帧或欺骗的请求路由)。因此,您可以自由地使用该状态代码向客户端指示此类行为。

相关问题