我在调用外部 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
。
最佳答案
当您使用 try
和 catch
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/