c# - 向 Api 发出 Http 请求并转换为 json

标签 c# request dotnet-httpclient

我的问题可能微不足道,但我花了将近 6 个小时来尝试解决问题。

public async Task<object> save() 
{
    var uri = "https://newsapi.org/v1/articles?source=talksport&apiKey=longKey";
    var httpClient = new HttpClient ();
    HttpResponseMessage res = await httpClient.GetAsync(uri);
    var data = await res.Content.ReadAsStreamAsync();

    // this is what I want to achieve like in python you can do something like this
    foreach(var item in data){
        Console.writeline(item.summary);
    }
    // end of arbitrary code
    return data;
}

我的问题是,我无法进行此转换以获取响应然后访问 json 数据。 在 python 中你可以做一些事情

r = request.get(apiUrl)
data = r.json()
for item in data:
   print(item.summary)

这就是我用 C# 努力实现的全部,任何帮助完成代码或解释。谢谢

最佳答案

尝试使用这样的东西:

安装 Newtonsoft.Json打包并添加using Newtonsoft.Json;

using (var request = new HttpRequestMessage()) {
    request.RequestUri = new Uri("https://newsapi.org/v1/articles?source=talksport&apiKey=longKey");
    request.Method = HttpMethod.Get;

    using (var response = await httpClient.SendAsync(request)) {
        string content = await response.Content.ReadAsStringAsync();

        var result = JsonConvert.DeserializeObject<IList<dynamic>>(content);

        foreach(var item in result){
           Console.writeline(item.summary);
        }
    }
}

来自评论

Then i get this "{\"vouchers\":[\"UN9NKK\",\"FYMFVS\",\"WV5AX7\",\"M2TJJ8\",‌​\"FBB9AL\",\"MBW8Z4\‌​"]}"

你可以创建一个新类

public class MyResponse { 
   public IEnumerable<string> Vouchers {get;set; } 
} 

然后

var response = JsonConvert.DeserializeObject<MyResponse>(content); 
foreach(var item in response.Vouchers){
     Console.WriteLine(item);
}

关于c# - 向 Api 发出 Http 请求并转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361927/

相关文章:

c# - RavenDB查询以检查用户名和密码

ASP.NET 请求 - 我可以从客户端创建的动态控件获取发布的文件吗?

android - 是否可以在 google 文档请求中包含 http header ?

c# - 重新设置单例httpclient的证书(Reconfiguring IHttpclientFactory?)

c# - HttpClient .Result 在使用 [WebMethod] 属性时挂起

c# - 异步调用API并解析JSON

c# - 带有计时器的简单应用程序正在消耗内存?

c# - 具有多个打开的工作簿的自定义任务 Pane

c# - 理解 Entity Framework 下的多表结果

json - 快速读取 JSON 文件中的 URL HTTPS