org.springframework.web.client.HttpClientErrorException 400



我正在使用的 API 必须键入响应成功响应 200 和错误响应 400 它们各自的响应正文中都有参数,但问题是无法获取它引发此异常的错误响应参数

public ResponseEntity<String> balanceInquiry(BalanceInquiryRequestDto balanceInquiryRequestDto) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
httpHeaders.set("API-KEY", "5d6f54d4");
HttpEntity<BalanceInquiryRequestDto> request = new HttpEntity<BalanceInquiryRequestDto>(balanceInquiryRequestDto , httpHeaders);
ResponseEntity<String> postForEntity = 
restTemplate.postForEntity(uri , request, String.class);
return postForEntity;
}

当响应正常时,它工作正常 200

我创建了一个小型的弹簧启动项目来展示您可以做什么。

首先是一个简单的服务,它在调用时会给我们一个错误:

@RestController
public class Endpoint {
@GetMapping("/error")
public ResponseEntity createError() {
ErrorDetails errorDetails = new ErrorDetails("some error message");
return ResponseEntity.status(400).body(errorDetails);;
}
}

要提取的错误详细信息类似于此示例中的错误详细信息:

@AllArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class ErrorDetails {
private String errorMessage;

}

然后是另一个终结点,其客户端调用失败的服务。它返回收到的错误详细信息:

@RestController
public class ClientDemo {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/show-error")
public String createError() {
try{
return restTemplate.getForEntity("http://localhost:8080/error", String.class).getBody();
} catch(HttpClientErrorException | HttpServerErrorException ex) {
return ex.getResponseBodyAsString();
}
}
}

为了完成:

@SpringBootApplication
public class StackoverflowApplication {
public static void main(String[] args) {
SpringApplication.run(StackoverflowApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

导航到 http://localhost:8080/show-error 时,您会看到以下内容:

{
"errorMessage": "some error message"
}

相关内容

  • 没有找到相关文章

最新更新