IHttpClientFactory Get和Post
public class LoginController : Controller { private readonly IHttpClientFactory _clientFactory; public LoginController(IHttpClientFactory clientFactory) { _clientFactory = clientFactory; } public IActionResult Index() { return View(); } public async Task<IActionResult> Login(string username,string pwd) { //todo:调用id4server获取token string token = await GetToken(username, pwd); ResultDto<string> resultDto = new ResultDto<string>(); resultDto.Data = token; resultDto.StatusCode = ResultCodes.OK; resultDto.Message = "操作成功"; return Json(resultDto); } /// <summary> /// 调用id4server获取token /// </summary> /// <param name="username"></param> /// <param name="pwd"></param> /// <returns></returns> private async Task<string> GetToken(string username, string pwd) { var client = _clientFactory.CreateClient();
//传输json格式
// var content= new StringContent("xxx=xxx", Encoding.UTF8,"application/json");
// 模拟表单提交 var content = new StringContent($"client_id=user_clientid&client_secret=user_secret&grant_type=password&username={username}&password={pwd}", Encoding.UTF8, "application/x-www-form-urlencoded"); var httpResponse = await client.PostAsync($"http://localhost:5000/connect/token", content); var jsonData= await httpResponse.Content.ReadAsStringAsync(); AuthModel model = JsonConvert.DeserializeObject<AuthModel>(jsonData); return model.access_token; } }