【问题标题】:Get Response from 3rd party API .NET CORE从 3rd 方 API .NET CORE 获取响应
【发布时间】:2021-07-28 08:36:56
【问题描述】:

我有这样的代码:

[HttpPost("ConsumeApiKavling")]
public async Task<HttpStatusCode> ConsumeApiKavling([FromBody] Kavlings model)
    {
        string apiBaseUrl = configuration.GetValue<string>("WebAPIBaseUrl");

        HttpClient client = new HttpClient();
        StringContent content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
        var Response = await client.PostAsync(apiBaseUrl, content);
        return Response.StatusCode;
    }

所以当我运行时,apiBaseUrl 将发送类似以下内容的响应:

{
  KavlingID: '4x',
  Status: 'OK'
}

从那个回复中,我怎么能得到它?我的意思是,我想将它保存到我的数据库表中。
请指教。
谢谢。

【问题讨论】:

  • 看看Response.Content

标签: c# api .net-core


【解决方案1】:

根据您要采用的方法,您可以使用以下工作流程:

  1. 创建将保存 API 响应的模型
  2. (可选):使用要传递给数据访问服务/数据库的属性创建数据传输对象 (DTO) 或 ViewModel
  3. 从 API 响应中读取正文内容:
    string jsonResult = await response.Content.ReadAsStringAsync();
    
  4. 反序列化返回的 JSON 对象(将 JSON 读入您的 .NET 对象)
    var responseModel = JsonSerializer.Deserialize<ResponseModel>(jsonResult);
    
  5. (可选):将模型映射到 DTO 并将其传递给数据访问服务

注意:如果您需要一些额外的 JSON 反序列化选项,您可以使用 JsonSerializerOptions

【讨论】:

  • 您可能希望更改答案以使用 JSON.NET 而不是 System.Text.Json。
  • 您好,谢谢。那么如何更改 return ?就这样吧?
  • 它还说,当我声明 var responseModel 时,jsonResult 显示红线.. 无法转换为字符串到 Newtonsoft.Json.JsonReader。
猜你喜欢
  • 2020-09-09
  • 2021-09-22
  • 1970-01-01
  • 2019-05-31
  • 2019-10-09
  • 2021-10-18
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
相关资源
最近更新 更多