C# 请求在线接口数据

请求后台,有很多方式,常见的有WebRequest、HttpClient。以下mark一上~

WebRequest方式

1. Get

 1     public static async Task<string> RequestDataAsync(string requestUrl)
 2     {
 3         WebRequest translationWebRequest = WebRequest.Create(requestUrl);
 4 
 5         var response = await translationWebRequest.GetResponseAsync();
 6 
 7         using (Stream stream = response.GetResponseStream())
 8         {
 9             using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException(),
10                 Encoding.GetEncoding("utf-8")))
11             {
12                 string result = reader.ReadToEnd();
13                 var decodeResult = Unicode2String(result);
14                 return decodeResult;
15             }
16         }
17     }

2. Post 

 1     /// <summary>
 2     /// Post using WebRequest
 3     /// </summary>
 4     /// <param name="requestUrl"></param>
 5     /// <param name="jsonData"></param>
 6     /// <returns></returns>
 7     public static async Task<string> PostDataAsync(string requestUrl,string jsonData)
 8     {
 9         WebRequest translationWebRequest = WebRequest.Create(requestUrl);
10         translationWebRequest.Method = "post";
11         translationWebRequest.ContentType = "application/json";
12 
13         byte[] postdatabyte = Encoding.UTF8.GetBytes(jsonData);
14         translationWebRequest.ContentLength = postdatabyte.Length;
15         using (Stream postStream= translationWebRequest.GetRequestStream())
16         {
17             postStream.Write(postdatabyte, 0, postdatabyte.Length);
18         }
19 
20         var response = await translationWebRequest.GetResponseAsync();
21 
22         using (Stream responseStream = response.GetResponseStream())
23         {
24             using (StreamReader reader = new StreamReader(responseStream ?? throw new InvalidOperationException(),
25                 Encoding.GetEncoding("utf-8")))
26             {
27                 string result = reader.ReadToEnd();
28                 var decodeResult = Unicode2String(result);
29                 return decodeResult;
30             }
31         }
32     }

HttpClient方式

 1     /// <summary>
 2     /// Post using HttpClient
 3     /// </summary>
 4     /// <param name="requestUrl"></param>
 5     /// <param name="jsonData"></param>
 6     /// <returns></returns>
 7     public static async Task<string> PostDataUsingHttpAsync(string requestUrl, string jsonData)
 8     {
 9         HttpContent httpContent = new StringContent(jsonData);
10         httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
11         HttpClient httpClient = new HttpClient();
12         HttpResponseMessage response = httpClient.PostAsync(requestUrl, httpContent).Result;
13         if (response.IsSuccessStatusCode)
14         {
15             Task<string> t = response.Content.ReadAsStringAsync();
16             return t.Result;
17         }
18         return string.Empty;
19     }

 

拿走,不谢~

 1     public class WebRequestBase
 2     {
 3         public static async Task<string> RequestDataAsync(string requestUrl)
 4         {
 5             WebRequest translationWebRequest = WebRequest.Create(requestUrl);
 6 
 7             var response = await translationWebRequest.GetResponseAsync();
 8 
 9             using (Stream stream = response.GetResponseStream())
10             {
11                 using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException(),
12                     Encoding.GetEncoding("utf-8")))
13                 {
14                     string result = reader.ReadToEnd();
15                     var decodeResult = Unicode2String(result);
16                     return decodeResult;
17                 }
18             }
19         }
20 
21         /// <summary>
22         /// Post using WebRequest
23         /// </summary>
24         /// <param name="requestUrl"></param>
25         /// <param name="jsonData"></param>
26         /// <returns></returns>
27         public static async Task<string> PostDataAsync(string requestUrl, string jsonData)
28         {
29             WebRequest translationWebRequest = WebRequest.Create(requestUrl);
30             translationWebRequest.Method = "post";
31             translationWebRequest.ContentType = "application/json";
32 
33             byte[] postdatabyte = Encoding.UTF8.GetBytes(jsonData);
34             translationWebRequest.ContentLength = postdatabyte.Length;
35             using (Stream postStream = translationWebRequest.GetRequestStream())
36             {
37                 postStream.Write(postdatabyte, 0, postdatabyte.Length);
38             }
39 
40             var response = await translationWebRequest.GetResponseAsync();
41 
42             using (Stream responseStream = response.GetResponseStream())
43             {
44                 using (StreamReader reader = new StreamReader(responseStream ?? throw new InvalidOperationException(),
45                     Encoding.GetEncoding("utf-8")))
46                 {
47                     string result = reader.ReadToEnd();
48                     var decodeResult = Unicode2String(result);
49                     return decodeResult;
50                 }
51             }
52         }
53 
54         /// <summary>
55         /// Post using HttpClient
56         /// </summary>
57         /// <param name="requestUrl"></param>
58         /// <param name="jsonData"></param>
59         /// <returns></returns>
60         public static async Task<string> PostDataUsingHttpAsync(string requestUrl, string jsonData)
61         {
62             HttpContent httpContent = new StringContent(jsonData);
63             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
64             HttpClient httpClient = new HttpClient();
65             HttpResponseMessage response = httpClient.PostAsync(requestUrl, httpContent).Result;
66             if (response.IsSuccessStatusCode)
67             {
68                 Task<string> t = response.Content.ReadAsStringAsync();
69                 return t.Result;
70             }
71             return string.Empty;
72         }
73 
74         /// <summary>
75         /// Unicode转字符串
76         /// </summary>
77         /// <param name="source">经过Unicode编码的字符串</param>
78         /// <returns>正常字符串</returns>
79         protected static string Unicode2String(string source)
80         {
81             return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(
82                 source, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)));
83         }
84     }
View Code

 

posted @ 2019-07-04 10:47  唐宋元明清2188  阅读(399)  评论(0编辑  收藏  举报