【问题标题】:Get response in JSON from API从 API 获取 JSON 响应
【发布时间】:2015-06-17 11:29:36
【问题描述】:

我正在使用 HttpClient 来使用来自 ASP.NET Web API 控制器的外部 API。我没有使用身份验证,只是一个令牌,所以我有:

using (var httpClient = new HttpClient()) {

  httpClient.DefaultRequestHeaders.Accept.Clear();

  httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

  HttpResponseMessage response = await httpClient.GetAsync(endpoint);

}

我总是以 XML 格式收到响应,但我发送的标头带有“application/json”。

我是否遗漏了什么,这是外部 API 的问题?

我还能尝试以 JSON 格式获取响应吗?

【问题讨论】:

  • 您是否尝试过使用任何类型的工具(如 Advanced Rest Client 或类似工具)来编写类似的请求?只是为了确保服务器端可以返回json。
  • 我尝试过 Postman,但无法获取 JSON。奇怪的是,在 API 文档中他们有响应示例,并且显示了 XML 和 JSON。
  • 他们可能会忽略 Accept 标头。它可以是 ?format=json 查询参数或其他任何东西。尝试先联系 API 所有者。

标签: c# json asp.net-web-api dotnet-httpclient


【解决方案1】:

API 开发人员应尊重媒体类型(应用程序/json)。开发人员可以在客户端请求 JSON 时显式返回 XML(如果他们觉得要拖钓),但在这种情况下,它可能只是为您提供默认格式,因为他们不检查标头值。

查看文档或直接联系他们以确认他们以 JSON 格式返回数据以及如何格式化请求以获取 JSON。

【讨论】:

    【解决方案2】:

    您应该设置 Accept: application/json 以及 Content-Type: application/json。

    【讨论】:

    • Accept是客户端可以处理的,客户端设置Content-Type只针对从客户端上传到服务器的任何数据,如果客户端不发送数据,则不设置Content-Type在客户端中。
    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2019-04-25
    • 2016-08-01
    • 2022-06-28
    • 2020-02-02
    相关资源
    最近更新 更多