首页 > 解决方案 > 无法使用 C# getAsync url 调用打印 JSON 响应

问题描述

using System;
using System.Net.Http;

namespace ConsoleAppRest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            string url = "http://jsonplaceholder.typicode.com/posts/1/comments";

            GetRequest(url);
        }

        async static void GetRequest(string urlstr)
        {


            using (HttpClient client = new HttpClient())
            {
                using (HttpResponseMessage response = await client.GetAsync(urlstr))
                {
                   using (HttpContent content = response.Content)
                    {
                        string mycontent = await content.ReadAsStringAsync();
                        Console.WriteLine(mycontent);

                    }

                }
            }

        }

    }
}

我正在使用上面的代码,但是当我执行时,我没有在控制台上得到任何东西。

要在调试停止时自动关闭控制台,请启用工具->选项-调试->调试停止时自动关闭控制台。按任意键关闭此窗口。. .

我应该得到如下 json 格式的响应(在浏览器中也是相同的结果)

[
 {
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"

  },
  {
"postId": 1,
"id": 2,
"name": "quo vero reiciendis velit similique earum",
"email": "Jayne_Kuhic@sydney.com",
"body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
  },
  {
  ..
  }
]

标签: c#jsonrestdeserialization

解决方案


您的代码是异步的,但您从同步方法调用它。您需要在打印结果之前等待结果,否则您的代码将退出。

var task = GetRequest(url);
task.WaitAndUnwrapException();

在这篇 SO 帖子中阅读更多内容: 如何调用异步

您还可以使主要方法异步,并等待您的呼叫

await GetRequest(url);

推荐阅读