是否可以告诉Refit不要尝试序列化某些HttpStatus代码的消息正文?
我正在与一个API集成(当身份验证失败时),该API返回HTML正文而不是JSON,以及203状态代码而不是401/403状态代码。这意味着改装将尝试序列化主体并抛出SerializationException
而不是ApiException
。
是否可以处理此实例?即告诉Refit仅将200视为成功,还是在反序列化之前插入可以访问状态码的步骤?
答案 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进行记录的一个示例。