是否可以告诉 Refit 不要尝试序列化某些 HttpStatus 代码的消息正文?
我正在与一个 API 集成,该 API(当身份验证失败时)返回 HTML 正文而不是 JSON,以及 203 状态代码而不是 401/403 状态代码。这意味着 Refit 将尝试序列化主体并抛出 aSerializationException
而不是ApiException
.
是否可以处理这种情况?即告诉 Refit 仅将 200 视为成功或在反序列化之前注入一个可以访问状态代码的步骤?
您可以使用DelegatingHandler
.
public class JamiesHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
// Do stuff with the response here...
return response;
}
}
// Then
var httpClient = new HttpClient(new JamiesHandler()){ BaseAddress = ""};
var contract = Refit.RestService.For<SomeContract>(httpClient);
这是使用 Refit 进行日志记录的示例。