【问题标题】:How do I get the Status Code and Header data from a HttpResponseData object?如何从 HttpResponseData 对象中获取状态代码和标头数据?
【发布时间】:2021-08-03 20:48:03
【问题描述】:

我目前有一个带有 ASP.NET Core Web API 的 Blazor 客户端 (Wasm)。 (都部署到 Azure)

ASP.NET Core Web API 返回一个 IActionResult,它在我的 BlazorClient 中转换为一个 HttpResponseMessage。

我想用 Azure Function HTTP Trigged 替换我的 ASP.NET Core Web API。

Azure 函数是 .Net 5。(我必须这样做,因为我在解决方案中的所有其他项目都是 .Net 5)。

由于该函数是用 .Net 5 编写的,因此返回一个 HttpResponseData 对象。

在我的 HttpResponseData 对象中,我有我想在客户端中测试的状态代码、我需要访问的标题数据(总计数),以及包含我的数据列表的正文。

当我从 Blazor 客户端调用 Azure 函数时,我无法访问标头数据。

当我使用 _httpClient.GetAsync 方法时,我在获取 Body 数据时也遇到了问题。

我能做的最好的事情就是使用 _httpClient.GetStringAsync 方法。从身体中获取我的数据。

但是,我也想要状态代码和标题数据。

请看下面的代码。

        public async Task<string> GetVpbDelegatesAsync2(int? pageNo, int? pageSize, string searchText)
        {
            var requestUri = $"{RequestUri.VpbDelegates}?pageNo={pageNo}&pageSize={pageSize}&searchText={searchText}";

            var response = await _httpClient.GetAsync(requestUri);

            //This line throws an exception. If I comment it out. I get my Body data
            var total = response.Headers.GetValues("X-TotalCount").First();

            return await _httpClient.GetStringAsync(requestUri);
        }

所以我的问题是:

  • 如何获得该状态码?
  • 如何获取我的身体数据?
  • 如何获取我的标头数据
  • 有谁知道任何演示/代码示例的客户端调用返回 HttpResponseData 的 Azure 函数。 (我找不到任何例子。)

感谢您的帮助。

编辑:仅适用于那些在家跟踪的人: 我能够获得状态代码,但我仍然无法获得标题数据。我在 PostMan 中进行了相同的调用,并且 Header 数据在那里。

编辑 2:我想出了如何从正文/内容中获取我的数据。但仍然没有得到 Header 数据。

【问题讨论】:

  • 我以为 HttpClient 返回了 HttpResponseMessage
  • 确实如此。但是,Azure 函数返回一个 HttpResponseData。

标签: c# azure-functions


【解决方案1】:

HttpResponseData 对象仅在函数代码的上下文中。您的HttpClient 对象仍会返回HttpResponseMessage,就像@Greg 提到的那样。

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 2015-06-08
    • 2020-03-08
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多