如何使用 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(对象值)中获取值的主要内容,如果未能解决你的问题,请参考以下文章

删除方法问题 - Asp.net Web API

如何使用HttpClient

如何httppost对象列表?

如何通过HttpPost从服务器上获得一个sessionid

如何从 HttpPost Create 操作方法中知道选中的复选框?

如何从FormCollection返回对象列表?