Handle HttpClientErrorException $ BadRequest:黄瓜RestTemplate中的400错误请求

问题描述 投票:0回答:1

[您好,我编写了一个Cucumber测试用例,其中我以XML主体发送POST请求,该请求的输出为XML主体出现400错误,这是预期的,当我抛出该请求时,我也得到了,但是我获取如下:

org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request
    at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:97)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:777)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:709)
    at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:462)
    at uk.co.argos.services.order.StepDefinations.TestMethods.POSTrestTemplatewithXML(TestMethods.java:147)
    at uk.co.argos.services.order.StepDefinations.StepDefs.user_hits_the_getSlot_request_with_OrderEnricher_with_and_and(StepDefs.java:118)
    at ✽.Given User hits the getSlot request with OrderEnricher with "2020-40-32" and "150" and "MK92NW"(OrderEnricher_Negative.feature:5)

并且我的测试步骤因请求失败而失败,但是理想情况下这是我的预期,我想通过我的测试步骤和方案,不确定我应该如何处理,我尝试了多种方法。谁能帮忙吗?

 public static ResponseEntity<String> POSTrestTemplatewithXML(URI uri, String XMLforPOST){
        ResponseEntity<String> responseEntity = null;
        try {
            RestTemplate restTemplate=new RestTemplate();
            List<HttpMessageConverter<?>> messageConverters=new ArrayList<HttpMessageConverter<?>>();
            messageConverters.add(new StringHttpMessageConverter());
            restTemplate.setMessageConverters(messageConverters);
            HttpHeaders headers=new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_XML);
            HttpEntity<String> request=new HttpEntity<String>(XMLforPOST, headers);
            responseEntity=restTemplate.postForEntity(uri, request, String.class);



        }
        catch (Exception e){
            System.out.println("RESPONSE-"  +responseEntity);
            byte[] bytes = ((HttpClientErrorException.BadRequest)e).getResponseBodyAsByteArray();
            assertTrue(true);

//Convert byte[] to String
            String s = new String(bytes);

            System.out.println(s);
            e.printStackTrace();
        }
        return responseEntity;
    }
spring-boot cucumber httpclient resttemplate http-status-code-400
1个回答
0
投票

请更新您的catch方法,如下所示:

try{
  //your code
} catch (HttpClientErrorException e){
  //your code
}
© www.soinside.com 2019 - 2024. All rights reserved.