在春季进行改造呼叫时,如果状态代码不是200,则响应主体为null

时间:2020-05-27 18:47:48

标签: java spring-boot rest retrofit retrofit2

调用外部api时,我正在使用改造客户端。 当状态代码为200时,我会得到一个响应代码以及响应正文。 对于状态代码非200 [ex 400]的错误对象作为响应,它不会获取并映射响应正文,而如果非200,则外部API将发送该正文。 在这种情况下,响应正文为空。

这是我的建造者

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

1 个答案:

答案 0 :(得分:0)

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

因此您的代码将如下所示

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

希望这会有所帮助!

相关问题