You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flurl中正确处理204响应

处理Flurl请求Audiocodes SBC API返回204无内容的情况

Flurl的GetJsonAsync在遇到204(无内容)响应时确实会返回null,因为没有可序列化的JSON内容。要正确处理这个场景,核心是先拿到完整的响应对象,再根据状态码分支处理:

方法1:用SendAsync获取响应后处理

先发送请求拿到IFlurlResponse实例,判断状态码后再决定是否反序列化:

var response = await "你的Audiocodes SBC API地址"
    .WithHeader("Authorization", "Bearer 你的认证令牌") // 根据实际认证方式调整
    .SendAsync(HttpMethod.Get);

if (response.StatusCode == HttpStatusCode.NoContent)
{
    // 无可用告警时的逻辑,比如返回空列表或空对象
    return new List<Alert>(); // 替换成你的告警实体类型
}
else
{
    // 正常反序列化JSON响应
    return await response.GetJsonAsync<List<Alert>>();
}

方法2:直接获取HttpResponseMessage处理

如果更习惯使用.NET原生的HttpResponseMessage,可以用GetAsync:

var httpResponse = await "你的Audiocodes SBC API地址"
    .WithHeader("Authorization", "Bearer 你的认证令牌")
    .GetAsync();

if (httpResponse.StatusCode == HttpStatusCode.NoContent)
{
    return Enumerable.Empty<Alert>();
}
else
{
    return await httpResponse.Content.ReadFromJsonAsync<List<Alert>>();
}

为什么之前找不到状态码?

GetJsonAsync是Flurl的快捷方法,它直接跳过了响应对象的获取环节,内部完成了"发送请求→读取内容→反序列化"的流程,所以你拿不到状态码。必须先通过SendAsync或GetAsync拿到响应实例,才能访问StatusCode属性。

另外要注意,204属于成功状态码,Flurl不会抛出异常,所以不需要额外的异常捕获逻辑,只需要根据状态码做分支处理即可。

内容的提问来源于stack exchange,提问作者acskr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:42:04