C#中httpclient的使用


1.使用HttpClient調用Oauth的授權接口獲取access_token

1)OAuth使用的密碼式

2)獲取到access_token后才進行下一步

2.帶着access_token調用接口

1)hearder上添加bearer方式的access_token

2)調用接口確保成功獲取到返回的結果

 

 1   try
 2             {
 3                 string host = ConfigurationManager.AppSettings["api_host"];
 4                 string username = ConfigurationManager.AppSettings["api_username"];
 5                 string password = ConfigurationManager.AppSettings["api_password"];
 6 
 7                 HttpClient httpClient = new HttpClient();
 8 
 9                 // 設置請求頭信息
10                 httpClient.DefaultRequestHeaders.Add("Host", host);
11                 httpClient.DefaultRequestHeaders.Add("Method", "Post");
12                 httpClient.DefaultRequestHeaders.Add("KeepAlive", "false");   // HTTP KeepAlive設為false,防止HTTP連接保持
13                 httpClient.DefaultRequestHeaders.Add("UserAgent",
14                     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
15 
16                 //獲取token
17                 var tokenResponse = httpClient.PostAsync("http://" + host + "/token", new FormUrlEncodedContent(new Dictionary<string, string> {
18                 {"grant_type","password"},
19                 {"username", username},
20                 {"password", password}
21             }));
22                 tokenResponse.Wait();
23                 tokenResponse.Result.EnsureSuccessStatusCode();
24                 var tokenRes = tokenResponse.Result.Content.ReadAsStringAsync();
25                 tokenRes.Wait();
26                 var token = Newtonsoft.Json.Linq.JObject.Parse(tokenRes.Result);
27                 var access_token = token["access_token"].ToString();
28 
29                 // 調用接口發起POST請求
30                 var authenticationHeaderValue = new AuthenticationHeaderValue("bearer", access_token);
31                 httpClient.DefaultRequestHeaders.Authorization = authenticationHeaderValue;
32                 var content = new StringContent(parameter);
33                 content.Headers.ContentType=new MediaTypeHeaderValue("application/json");
34                 var response = httpClient.PostAsync("http://" + host + "/" + api_address,content );
35 
36                 response.Wait();
37                 response.Result.EnsureSuccessStatusCode();
38                 var res = response.Result.Content.ReadAsStringAsync();
39                 res.Wait();
40                 return Newtonsoft.Json.JsonConvert.DeserializeObject<ResultEx>(res.Result);
41             }
42             catch (Exception ex)
43             {
44 
45                 return ResultEx.Init(ex.Message);
46             }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM