无法从使用 C# 的 API 获得 json 响应

Posted

技术标签:

【中文标题】无法从使用 C# 的 API 获得 json 响应【英文标题】:Can't get a json response from an API with C# 【发布时间】:2015-12-16 19:52:34 【问题描述】:

我只是在学习如何使用 API。我已经能够请求并获得一个安全令牌,并且我能够通过 API 进行身份验证,以便 GET 请求返回我想要的信息。我使用下面显示的代码来发出我的 GET 请求。

client.BaseAddress = new Uri("https://api.example.com");
client.DefaultRequestHeaders.Accept.Clear();
//client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization" ,"Bearer "+ accessToken);
client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
HttpResponseMessage response =client.GetAsync"/api/v1/agencies/agencyId/users?email=Test.Test@Test.net").Result;
if (response.IsSuccessStatusCode)

    string json = "Need help here";

我通过了 API 的身份验证,但不知道如何获取 json 数据。我发现了几个使用带有本地 API 的命令提示符应用程序的示例;它们似乎都使用带有等待的异步,但它们似乎不适用于 ASP.Net Web 应用程序。

谁能帮助我或展示一个使用网络表单的示例?

【问题讨论】:

HttpClient 有一个GetStringAsync 方法。获取 JSON 字符串的示例显示为in this question。 如果您一开始不知道如何从 HttpClient 获取 JSON 字符串,@B.ClayShannon Json.NET 不会帮助您。 也许我们需要佩里·梅森来解决这个问题……哦,等等,你已经在这里了!如果 Dixon 出现,我们可以在那里划清界限。 检查这个:restsharp.org What does HttpResponseMessage return as Json的可能重复 【参考方案1】:

你可以这样得到json:

if (response.IsSuccessStatusCode)

    string json = response.Content.ReadAsStringAsync().Result;

对于异步功能,您可以使用它:

if (response.IsSuccessStatusCode)

    string json = await response.Content.ReadAsStringAsync();

【讨论】:

谢谢托马斯,您的回答正是我所需要的。我将进入此旅程的下一步,即获取该 json 数据并将其放入数据库。

以上是关于无法从使用 C# 的 API 获得 json 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# Asp.Net 中从相当复杂的 Json 响应中创建 Dto

localhost上的测试Laravel API无法获得响应

无法反序列化 JSON 响应

如何从 AWS MWS API json 响应下载 .xlsx 文件?

在C#中解析Json rest api响应[重复]

无法从使用 Express.js 和 SQL Server 创建的 api 获得任何响应