当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:返回HTTP响应代码400,嵌套异常为java.io.ioException

昝欣可
2023-03-14

考虑下面的代码。在这里,当响应返回的状态代码为200时,代码执行工作正常。

 @RestController
    Class ABC{
    
        @Autowired
        RestTemplate template;
    
        @PostMapping("....")
        ResponseEntity<Object> getResponse(){
            ResponseEntity<String> response
            try{
              HttpEntity<Object> body=new HttpEntity(obj,header); // data obj & httpheader
              response=template.postForEntity("http://localhost:8090/get- 
                       data",body,String.class);
            }catch(HttpStatusCodeException ex){
                  throw....
            }catch(Exception ex){
                throw Internal Server Error.....  //Exception is thrown here
            }       
            if(response.getStatusCodeValue()==200){
                 ...
            }
               ...
    
        }
    }
    
    @RestController
    Class XYZ{
       
       @PostMapping("/get-data")
       ResponseEntity<Object> getTheStatus(@RequestHeader HttpHeaders headers ,@ResponseBody MyData data){
    
              return new ResponseEntity<>("",HttpStatus.BAD_REQUEST);
    
       }
    
    }

共有1个答案

柯凯旋
2023-03-14

在HTTP上下文中,响应状态200表示成功响应。状态4xx和5xx代表了一些问题。问题可能与请求、连接、服务器或其他源有关。一些HTTP客户端实现,如RestTemplate,在出现非成功状态代码时会抛出异常,因为非成功响应状态表示执行失败。

如果希望避免异常,可以添加错误处理程序。

public class RestTemplateResponseErrorHandler 
  implements ResponseErrorHandler {

    @Override
    public boolean hasError(ClientHttpResponse httpResponse) throws IOException {
      return false;
    }

    @Override
    public void handleError(ClientHttpResponse httpResponse) throws IOException {}
}

RestTemplate restTemplate = restTemplateBuilder
          .errorHandler(new RestTemplateResponseErrorHandler())
          .build();

template.postForEntity("http://localhost:8090/get-data", body, String.class);
 类似资料:
  • 我得到这个错误: java。木卫一。IOException:服务器为URL返回了HTTP响应代码400:https://graph.facebook.com/search?q=java 对于这个代码: 我不明白为什么?

  • 问题内容: 我正在尝试从URL获取InputStream。可以从Firefox打开URL。它返回一个json,并且我已经安装了一个插件以在Firefox中查看json,因此我可以在其中查看它。 所以我尝试通过以下方式从Java获取它: 但是它在urlConnection.getInputStream()中抛出IOException。 我也尝试过: 但是没有运气。 任何信息都是可观的。提前致谢。 问

  • 我正在学习有关如何使用PayPal-PHP-SDK的教程,我被困在控制台中的某个地方出现此错误: 更新 尝试更新函数名称后,日志中的新消息是: 这是代码: 任何方向,问题,以改善同一问题,评论,建议或要求澄清/更多信息,等等[...如能帮助解决这个问题,我将不胜感激。

  • 我正在尝试使用以下代码使用 Groovy 执行 get 请求: String url = “url of endpoint” def responseXml = new XmlSlurper().parse(url) 如果endpoint返回的状态为200,则一切正常,但有一种情况,我们必须验证如下所示的错误响应,返回的状态为400: 在这种情况下,parse方法抛出:

  • 我正在开发一个线程java应用程序,它通过点击url发送sms消息 问题是我在NTLM代理服务器后面,我搜索了一天的大部分时间,尝试了许多解决方案,但没有成功。应用程序给出了标题错误,当我试图打印错误响应时,我发现错误页面来自代理服务器 这是击打密码 我得到了喘息的机会 任何帮助都很感激谢谢