请求后台,有很多方式,常见的有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
作者:唐宋元明清2188
本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。