.netcore是我的新手,我正在在docker容器上运行的Web api上工作,而在使用邮递员的同时,Web api可以很好地输出结果。我想在.netcore中制作一个程序,以调用webapi端点并获取响应,并在具有MVC的其他端点中使用该特定响应。
下面给出解释。
管理员的默认用户名和密码是默认设置,例如username:admin , password: helloworld
。管理员首次登录该api时需要一个新的个人密码,如下图的邮递员图所示。
登录api是:localhost://..../v1/users/login
第一个问题是如何使用.netcore在Authorization-> BasicAuth中提供值。 api的主体如下图所示。
设置new_password后,api的响应是令牌,如下所示。
然后在环境中使用特定令牌创建用户。下面给出了更清晰的问题的图像。
最后,令牌随后用于进行其他API调用,例如创建用户。
API: https://localhost/..../v1/users
图片如下。
作为.netcore语言的新手,我真的很努力进行此类API调用,因为我尝试的大多数教程都是从API生成自己的令牌,但是在这里我只想获取响应令牌并保存然后在其他API调用中使用它。 StackOverflow社区的支持始终对我非常方便。
我正在尝试的代码如下。
**Controller**
public class Login_AdminController : ControllerBase
{
[Route("/loginAdmin")]
[HttpPost]
public async Task<string> LoginAdminAsync([FromBody] dynamic content)
{
LoginAdmin L = new LoginAdmin();
var client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:9090");
var request = new HttpRequestMessage(HttpMethod.Post, "/v1/users/login");
var byteArray = new UTF8Encoding().GetBytes($"<{L.username}:{L.df_Password}>");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("new_password", "helloWorld123!"));
request.Content = new FormUrlEncodedContent(formData);
var response = await client.SendAsync(request);
Console.WriteLine(response);
return content;
}
}
}
***Model***
public class LoginAdmin
{
public string username = "admin";
public string df_Password = "secret";
public string new_Password { get; set; }
}
谢谢。
答案 0 :(得分:1)
您的问题似乎是关于如何在dotnet核心中执行API请求。您要查找的类称为HttpClient
,在dotnet核心中,它对创建类的方式进行了一些更改。我建议您检查这些文档,以了解如何创建一个文档以及有关它的一些知识:
ASPNET CORE 2.2 HttpRequests
最后,我将向您推荐这个问题,作为通过您创建的客户端发布JSON的示例:POSTing JsonObject With HttpClient From Web API
。值得注意的是,有一些扩展方法可以传递对象而不是字符串内容,并且在第一个文档中,您可以看到添加标头的示例(例如Authorization
)