netcore PostAsync application/x-www-form-urlencoded

IHttpClientFactory _httpClientFactory;
        public HttpController(IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }
        [HttpGet]
        public async Task<IActionResult> Get3()
        {
            var client = _httpClientFactory.CreateClient();
            var dic = new Dictionary<string, object> { { "scope", "api1" },
                { "grant_type", "password" },
                { "client_id","ro.client" },
                { "client_secret","secret" },
                { "username","alice"},
                { "password","password" } };
            var dic_str = dic.Select(m => m.Key + "=" + m.Value).DefaultIfEmpty().Aggregate((m, n) => m + "&" + n);
            HttpContent httpcontent = new StringContent(dic_str);
            httpcontent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
            var oauth_rep = await client.PostAsync("http://localhost:100/connect/token", httpcontent);
            var oauth_str = await oauth_rep.Content.ReadAsStringAsync();
            var oauth_job = JsonConvert.DeserializeObject<JObject>(oauth_str);


            client.SetBearerToken(oauth_job["access_token"].ToString());
            var data_rep = await client.GetStringAsync("http://localhost:101/api/values/get");
            var data_job = JsonConvert.DeserializeObject<JObject>(data_rep);
            return Ok(data_job);
        }

第一部分获取token,第二部分获取数据

posted @ 2019-10-08 16:36  天天的蓝色  阅读(1828)  评论(0编辑  收藏  举报