c# - 无法使用 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"
},
{
..
}
]
解决方案
您的代码是异步的,但您从同步方法调用它。您需要在打印结果之前等待结果,否则您的代码将退出。
var task = GetRequest(url);
task.WaitAndUnwrapException();
在这篇 SO 帖子中阅读更多内容: 如何调用异步
您还可以使主要方法异步,并等待您的呼叫
await GetRequest(url);
推荐阅读
- android - 如何将 FAB 置于 Scrollview 标签之外?
- codeanywhere - 如何在任何地方的代码中禁用无干扰模式
- c++ - 非标准 c 头文件(unistd.h、fcntl.h、...)如何与 c++ 一起使用
- reactjs - React Navigation + Native Base => props.navigation.navigate 不是函数
- android - 自定义 TextSelection 菜单并在 react natve 中单击事件
或者 - ios - 预配配置文件错误 Visual Studio Windows
- angular - 有没有办法在没有 setTimeout 的情况下将模板驱动的表单标记为初始“触摸”?
- wordpress - Wordpress 联系表单对 Laravel 方法的作用
- php - PhpStorm 致命错误:找不到类“Crypt_RSA”(phpseclib)
- c# - NetMQ中如何识别传入连接的物理地址?