c# - 如何从 .NET Core 中的 Web API 响应中读取标头数据?
问题描述
我正在从我的客户端项目中调用 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[]
。
请告诉我从响应头中获取数据的正确方法。
解决方案
我找到了解决方案:
var headers = response.Headers;
string role = "";
if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
{
role = headerValues.FirstOrDefault();
}
不要忘记添加对System.Linq
.
推荐阅读
- c++ - 如何组合两个字符数组而不会出现此错误?
- bash - 使脚本输出 CSV 友好
- node.js - 带有子分类文件夹的命令处理程序
- javascript - 鼠标单击按钮时更改悬停颜色
- angular - 编译问题
- javascript - 如何使用 JQuery EasyUI 和 Spring Boot 构建一些简单的注册/登录页面,用户/密码存储在 json 中?
- java - 为什么 stripVersion 不能在 maven-dependency-plugin 上使用 mojo unpack-dependencies
- python - Numpy - 查找矩阵乘法的最近邻
- r - 在 For 循环中将预测图导出为 JPEG
- python - 如何在 Tensorflow 的张量中选择一个“框”并将所有这些像素设置为零?