0

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

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

是否可以处理这种情况?即告诉 Refit 仅将 200 视为成功或在反序列化之前注入一个可以访问状态代码的步骤?

4

1 回答 1

3

您可以使用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 进行日志记录的示例。

于 2019-03-29T23:01:10.870 回答