代码之家  ›  专栏  ›  技术社区  ›  A.Rowan

传递一个json对象。net核心api

  •  1
  • A.Rowan  · 技术社区  · 8 年前

    我试图从api调用提供Json对象的端点,然后返回该对象。

    我试过这个:

    using(var client = new HttpClient())
        {
            var response = await client.GetAsync(new Uri($"RestEndpoint"));
    
            return Ok(response.Content.ReadAsStringAsync());
    
        }
    

    这是:

    using(var client = new HttpClient())
        {
            var response = await client.GetAsync(new Uri($"RestEndpoint"));
            var stream = await response.Content.ReadAsStreamAsync();
            byte[] buffer = new byte[32768];
            using (MemoryStream memoryStream = new MemoryStream())
            {
                while (true)
                {
                    int read = stream.Read(buffer, 0, buffer.Length);
                    if (read <= 0)
                    {
                        return Ok( memoryStream.ToArray());
                    }
                    memoryStream.Write(buffer, 0, read);
                }
            }
        }
    

    但是在HttpClient接收JSON对象时,两者都不提供JSON对象。我这么说是因为当我用邮递员点击端点时,它的格式是正确的。

    背景: 我有一个http触发器函数应用程序,它提供了一个json对象,它实际上就像一个api端点。我正在使用此函数应用程序,因为模型已存在于我的函数应用程序项目中。但是,我们的项目有一个单独的api,它具有所有的身份验证/授权。因此,我需要从api调用现有函数app endpoint,并直接传递Json对象,而无需对其进行反序列化和解析。我不想在api项目中有模型的副本。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mikhail Shilkov    8 年前

    替换你的 Ok 打电话给

    var content = await response.Content.ReadAsStringAsync();
    return Content(content, "application/json");
    

    Content 方法按原样返回给定字符串。