【问题标题】:How to read only a specific part from HTTP Response body in c#?如何在 C# 中只读取 HTTP 响应正文的特定部分?
【发布时间】:2023-01-01 23:31:50
【问题描述】:

我只需要以下响应正文中的“点数”:300。

这是正文:

{
  "channel": "abcd",
  "username": "fgh",
  "points": 300,
  "pointsAlltime": 0,
  "watchtime": 0,
  "rank": 1
}

代码:

var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://api.streamelements.com/kappa/v2/points/abcd/fgh"),
    Headers =
    {
        { "Accept", "application/json" },
        { "Authorization", "Bearer 123" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}

我只需要点值。 - 300

【问题讨论】:

    标签: c# http request httprequest httpresponse


    【解决方案1】:

    您需要将字符串响应反序列化为 JSON,并借助属性名称提取 points 值。

    使用JObject.Parse(String)

    using (var response = await client.SendAsync(request))
    {
        response.EnsureSuccessStatusCode();
        var result = await response.Content.ReadAsStringAsync();
    
        JObject jObj = JObject.Parse(result);
        Console.WriteLine(jObj["points"]);
    }
    

    您还可以尝试在 .NET 6+ 版本中引入的本机 .NET 方法,即 JsonNode.Parse()

    var jNode = JsonNode.Parse(result);
    Console.WriteLine(jNode["points"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2016-05-03
      • 2017-12-18
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多