是否可以配置Refit何时应尝试反序列化?

时间:2019-03-29 22:17:53

标签: c# .net-core refit

是否可以告诉Refit不要尝试序列化某些HttpStatus代码的消息正文?

我正在与一个API集成(当身份验证失败时),该API返回HTML正文而不是JSON,以及203状态代码而不是401/403状态代码。这意味着改装将尝试序列化主体并抛出SerializationException而不是ApiException

是否可以处理此实例?即告诉Refit仅将200视为成功,还是在反序列化之前插入可以访问状态码的步骤?

1 个答案:

答案 0 :(得分:1)

您可以使用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);

Here是使用Refit进行记录的一个示例。