java - 在 spring 中进行改造调用时,当状态码不为 200 时,响应正文为 null

标签 java spring-boot rest retrofit retrofit2

我在调用外部 api 时使用我的改造客户端。 当状态代码为 200 时,我会收到响应代码和响应正文。 对于响应中包含错误对象的状态代码非 200 [例如 400],它不会获取和映射响应正文,而外部 API 在非200. 在这种情况下,响应正文为空。

这是我的构建器

Retrofit.Builder builder =
    new Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(JacksonConverterFactory.create(objectMapper))
        .client(httpClient);

Retrofit retrofit = builder.build();

调用时:

Call<ResponseDto> call =
    service.listSearch(listRequestDto);

try {
  Response<ResponseDto> response = call.execute();
}

当调用为200时,ResponseDto被接收并映射,但当它为非200时,它是null

最佳答案

当您使用 trycatch block 时。您可以在 catch block 中获取错误,然后您可以决定需要做什么。如果发生错误,您将不会得到响应,它会直接转到 catch block 。

所以你的代码看起来像这样

try {
  Response<ResponseDto> response = call.execute();
 } catch (err) {
   // Do what you want to do in case of error.
}

希望这有帮助!

关于java - 在 spring 中进行改造调用时,当状态码不为 200 时,响应正文为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050666/

相关文章:

java - Spring security - 错误导致性能问题

java - 抓取图片在ImageView上显示,并保存在不同序列号的SD卡中

spring-boot - Spring Cloud Gateway 在 url 请求末尾看不到斜杠

c# - 在 C# restful web 服务中删除 xml 命名空间返回字符串

web-services - 执行时间长的REST请求的方法?

java - 如何使用 Spring Cloud Gateway 自定义过滤器来过滤每个请求?

java - HTMLUNIT v. 2.15 Bug 线程死锁

Spring MVC 5 ResultMatcher jsonPath 空值

java - 带有 Exactly Once 处理的 Kafka 的 Spring Boot

java - Java 中用于 REST 服务的异步页面等效项