如何使用 HttpPost 方法从 Ok(对象值)中获取值
Posted
技术标签:
【中文标题】如何使用 HttpPost 方法从 Ok(对象值)中获取值【英文标题】:How to get value from Ok(object value) using HttpPost method 【发布时间】:2020-08-10 10:08:44 【问题描述】:我正在调用登录方法:
var result = $"Properties.Settings.Default.APIUrl/_route/login".PostJsonAsync(userToLogin);
我想从结果中获取令牌 var myToken = result;
这是API中的登录方法
[HttpPost("login")]
public async Task<IActionResult> Login(UserToLogin userToLogin)
var user = await _userManager.FindByNameAsync(userToLogin.Username);
var result = await _signInManager
.CheckPasswordSignInAsync(user, userToLogin.Password, false);
if (result.Succeeded)
var appUser = await _userManager.Users
.FirstOrDefaultAsync(u => u.NormalizedUserName == userToLogin.Username.ToUpper());
var userToReturn = appUser;
return Ok(new
token = GenerateJwtToken(appUser).Result
);
return Unauthorized();
【问题讨论】:
【参考方案1】:您的 API 正在返回一个匿名类型的实例。所以响应体应该是这样的:
"Token": "GENERATED TOKEN"
实现你需要的最简单的方法是拥有一个匹配 json 响应的类。例如:
public class MyResponse
public string Token get;set;
并调用使用类型参数化的 API
var result = $"Properties.Settings.Default.APIUrl/_route/login".PostJsonAsync<MyResponse>(userToLogin);
这样做的目的是:如果您的 API 返回成功代码 (200
postJsonAsync 还会返回一个 Task,因此您需要等待 Task 才能获取 MyResponse 对象。
【讨论】:
以上是关于如何使用 HttpPost 方法从 Ok(对象值)中获取值的主要内容,如果未能解决你的问题,请参考以下文章
如何通过HttpPost从服务器上获得一个sessionid