C# - Request
请求分为多种
首先用 HttpClient 这个类来请求和接受响应
HttpClient 是用来发送 Http 请求和接受 Http 请求响应 的
在 System.Net.Http 命名空间下
派生于 HttpMessageInvoker
private static async void GetData() { var Uri1 = "http://localhost:25025/Admin/Home/Index"; var Uri2 = "http://localhost:25025/api/Site4App/Home/Test2?id=11"; HttpClient httpClient = new HttpClient(); // 可以给 httpClient 添加头部, 令其可以接受 json 格式的返回 //httpClient.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose"); HttpResponseMessage response = null; // 发送 Get 请求, 注意是异步的 response = await httpClient.GetAsync(Uri2); // 检查响应结果 if (response.IsSuccessStatusCode) { Console.WriteLine("Response Status Code: " + response.StatusCode + " " + response.ReasonPhrase); // 返回的 response 中, Content 含有返回内容. // 需要用 ReadAs__Async() 方法来获取 // ReadAs__Async() 是一个异步方法, 返回 Task<string>, 所以需要用 Result 来获取 string string responseBodyAsText = response.Content.ReadAsStringAsync().Result; Console.WriteLine("Received payload of " + responseBodyAsText + " characters"); } else { Console.WriteLine(response.ReasonPhrase); } } private static async void PostData() { var Uri2 = "http://localhost:25025/api/Site4App/Home/Test4"; var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.None }; HttpClient httpClient = new HttpClient(handler); httpClient.BaseAddress = new Uri(Uri2); var content = new FormUrlEncodedContent(new Dictionary<string, string>() { {"id", "111"}, }); HttpResponseMessage response = null; response = await httpClient.PostAsync(Uri2, content); if (response.IsSuccessStatusCode) { string responseBodyAsText = response.Content.ReadAsStringAsync().Result; Console.WriteLine(responseBodyAsText); } else { Console.WriteLine(response.ReasonPhrase); } }
利用WebClient
/// <summary> /// 推送数据到指定 Url /// </summary> /// <param name="content"> /// 已经加密过的内容 /// </param> /// <returns></returns> public static string Post(string content) { var url = "https://wzgy.vicp.net/Business.ashx"; string returnMsg = ""; using (WebClient wc = new WebClient()) { NameValueCollection data = new NameValueCollection(); data.Add("content", content); wc.Encoding = Encoding.UTF8; returnMsg = Encoding.UTF8.GetString(wc.UploadValues(url, "POST", data)); } return returnMsg; }
利用HttpWebRequest
获取网页源代码
/// <summary> /// 获取网页HTML源码 /// </summary> /// <param name="url">链接 eg:http://www.baidu.com/ </param> /// <param name="charset">编码 eg:Encoding.UTF8</param> /// <returns>HTML源码</returns> public static string GetHtmlSource(string url, Encoding charset) { string _html = string.Empty; try { HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse _response = (HttpWebResponse)_request.GetResponse(); using (Stream _stream = _response.GetResponseStream()) { using (StreamReader _reader = new StreamReader(_stream, charset)) { _html = _reader.ReadToEnd(); } } } catch (WebException ex) { using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream())) { _html = sr.ReadToEnd(); } } catch (Exception ex) { _html = ex.Message; } return _html; }