调用外部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
。
答案 0 :(得分:0)
使用try
和catch
块时。您可以在catch块中得到错误,然后可以决定需要做什么。如果发生错误,您将不会得到响应,它将直接转到catch块。
因此您的代码将如下所示
try {
Response<ResponseDto> response = call.execute();
} catch (err) {
// Do what you want to do in case of error.
}
希望这会有所帮助!