.Net(C#)后台發送Get和Post請求的幾種方法總結


轉自:https://www.cjavapy.com/article/50/

 

本文主要介紹分別通過HttpClient、Flurl.Http、WebRequest和WebClient發送Get和Post請求的方法。

 

1、通過HttpClient發送Get和Post請求

適用平台:.NET Framework 4.5+, .NET Standard 1.1+, .NET Core 1.0+

其它平台的移植版本可以通過Nuget來安裝。(Nuget使用方法:http://www.cjavapy.com/article/21/)

命名空間:using System.Net.Http;

HttpClient推薦使用單一實例共享使用,發關請求的方法推薦使用異步的方式,代碼如下,

private static readonly HttpClient client = new HttpClient(); //發送Get請求 var responseString = await client.GetStringAsync("http://www.example.com/recepticle.aspx"); //發送Post請求 var values = new Dictionary { { "thing1", "hello" }, { "thing2", "world" } }; var content = new FormUrlEncodedContent(values); var response = await client.PostAsync("http://www.example.com/recepticle.aspx", content); var responseString = await response.Content.ReadAsStringAsync();

2、通過第三方類庫發送Get和Post請求

1)Flurl.Http(可以通過Nuget來安裝)

命名空間:using Flurl.Http;

//發送Get請求
var responseString = await "http://www.example.com/recepticle.aspx" .GetStringAsync(); //發送Post請求 var responseString = await "http://www.example.com/recepticle.aspx" .PostUrlEncodedAsync(new { thing1 = "hello", thing2 = "world" }) .ReceiveString();

2)RestSharp(可以通過Nuget來安裝)

//發送Get和Post請求
 RestClient client = new RestClient("http://example.com");//指定請求的url RestRequest req = new RestRequest("resource/{id}", Method.GET);//指定請求的方式,如果Post則改成Method.POST request.AddParameter("name", "value"); // 添加參數到 URL querystring request.AddUrlSegment("id", "123"); // 替換上面指定請求方式中的{id}參數 //req.AddBody(body); /*如發送post請求,則用req.AddBody()指定body內容*/ //發送請求得到請求的內容 //如果有header可以使用下面方法添加 //request.AddHeader("header", "value"); IRestResponse response = client.Execute(request); //上傳一個文件 //request.AddFile("file", path); var content = response.Content; // 未處理的content是string //還可以下面幾種方式發送請求 //發送請求,反序列化請求結果 IRestResponse response2 = client.Execute(request); var name = response2.Data.Name; //發送請求下載一個文件,並保存到path路徑 client.DownloadData(request).SaveAs(path); // 簡單發送異步請求 await client.ExecuteAsync(request); // 發送異常請求並且反序列化結果 var asyncHandle = client.ExecuteAsync(request, response => { Console.WriteLine(response.Data.Name); }); //終止異步的請求 asyncHandle.Abort();

3、比較老一點的方法通過WebRequest發送請求

適用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 1.0+

命名空間:
using System.Net;
using System.Text;  // for class Encoding
using System.IO;    // for StreamReader

 

//發送Get請求
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx"); var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); //發送Post請求 var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx"); var postData = "thing1=hello"; postData += "&thing2=world"; var data = Encoding.ASCII.GetBytes(postData); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

 

4、通過WebClient的方式發送請求

適用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 2.0+

命名空間:
using System.Net;
using System.Collections.Specialized;

 

using System.Net;
using System.Collections.Specialized; //發送Get請求 string url = string.Format("http://localhost:28450/api/values?p1=a&p2=b"); using (var wc = new WebClient()) { Encoding enc = Encoding.GetEncoding("UTF-8"); Byte[] pageData = wc.DownloadData(url); string re = enc.GetString(pageData); } //發送Post請求 using (var client = new WebClient()) { var values = new NameValueCollection(); values["thing1"] = "hello"; values["thing2"] = "world"; var response = client.UploadValues("http://www.example.com/recepticle.aspx", values); var responseString = Encoding.Default.GetString(response); }


免責聲明!

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



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