【发布时间】:2019-11-21 14:28:45
【问题描述】:
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"
},
{
..
}
]
【问题讨论】:
-
显而易见的答案是因为它没有返回任何东西。调试此问题的第一步是观察网络流量以确认在运行代码时是否实际返回任何内容。
-
另外,它是一个异步方法,你不需要等待它。所以应用程序在请求返回之前结束。
-
GetRequest 是异步的,所以你需要等待 GetRequest(url);。这将要求您也使 main 方法异步。
标签: c# json rest deserialization