如何在c#中将post请求的响应转换为bool?

jus*_*tme 5 c# asp.net-core

我的 ASP.NET Core 2.1 控制器中有一个端点

[HttpPost]
public async Task<bool> CheckStatus([FromBody] StatusModel model)
{
...code ommited
return true;
}
Run Code Online (Sandbox Code Playgroud)

我从代码中的其他地方调用这个端点,如下所示:

await client.PostAsync('/CheckStatus', payloayd)
Run Code Online (Sandbox Code Playgroud)

如何从此请求中检索 bool 值?

Ree*_*ell 9

使用Newtonsoft.Json,您可以读取请求的响应并将其解析为布尔值。

    using Newtonsoft.Json;

    public async Task<bool> GetBooleanAsync()
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var data = new { };
            var url = "my site url";

            var payload = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");

            var req = await client.PostAsync(url, payload);
            var response = await req.Content.ReadAsStringAsync();

            return JsonConvert.DeserializeObject<bool>(response);
        }
    }
Run Code Online (Sandbox Code Playgroud)

更新

回顾几年前的情况,可以通过简单地将字符串数据解析为布尔值来简化,而无需使用 Newtonsoft.Json 来读取响应。

public async Task<bool> GetBooleanAsync()
{
    var data = new { };
    var url = "my site url";

    var payload = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");

    using var client = new HttpClient();
    var response = await client.PostAsync(url, payload);
    var data = await response.Content.ReadAsStringAsync();

    return Boolean.Parse(data);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您的布尔值在 JSON 对象中返回,则可以使用 Newtonsoft.Json 读取该值。