【问题标题】:How to read header data from a web API response in .NET Core?如何从 .NET Core 中的 Web API 响应中读取标头数据?
【发布时间】:2018-12-08 03:35:39
【问题描述】:

我正在从我的客户端项目中调用 Web API 方法并将响应标头中的值返回给客户端:

[HttpPost]
[AllowAnonymous]
[Route("login")]
public IActionResult Login(Users user)
{
    string s = _repository.Users.ValidateUser(user);
    if (s == "success")
    {
        Users u = _repository.Users.FindByUserName(user.UserName);
        int pid = u.PersonId;
        string role = "";
        if (u != null)
        {

            role = _repository.RoleManager.GetRole(u.Id);
        }
        Response.Headers.Add("Role", role);
        return Ok(pid.ToString());
    }

}

我尝试使用以下代码在客户端应用程序中获取标头值:

[HttpPost]
public IActionResult Login(Users user)
{    
    string pid = "";
    HttpClient client = service.GetService();
    HttpResponseMessage response = client.PostAsJsonAsync("api/mymethod", user).Result;
    Task<string> tokenResult = response.Content.ReadAsAsync<string>();
    pid = tokenResult.Result.ToString();
       
    var headers = response.Headers;
    string role = "";
    if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
        {
            role = headerValues.ToString();
        }

    return RedirectToAction("Profile");
}

但它返回System.String[]

请告诉我从响应头中获取数据的正确方法。

【问题讨论】:

  • 感谢回复...它显示从请求中读取数据,但我想从响应头中读取数据
  • 能否添加getRole-method的代码?我认为这是混乱的根源

标签: c# asp.net-core asp.net-core-webapi


【解决方案1】:

我找到了解决办法:

var headers = response.Headers;
string role = "";
if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
{
    role = headerValues.FirstOrDefault();
}

别忘了添加对System.Linq的引用。

【讨论】:

    【解决方案2】:

    使用StringValues

    var headers = response.Headers;
    string role = "";
    if (headers.TryGetValues("Role", out Microsoft.Extensions.Primitives.StringValues headerValues))
    {
        role = headerValues.FirstOrDefault();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 2016-09-02
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 2019-04-28
      相关资源
      最近更新 更多