摘要
RestSharp 是一個(gè)用于在 C# 中發(fā)送 HTTP 請(qǐng)求的開源庫(kù)。它簡(jiǎn)化了與 RESTful API 進(jìn)行交互的過程,使開發(fā)人員可以輕松地發(fā)送 GET、POST、PUT、DELETE 等 HTTP 請(qǐng)求,并處理響應(yīng)數(shù)據(jù)。RestSharp 提供了一種簡(jiǎn)潔的方式來構(gòu)建和發(fā)送 HTTP 請(qǐng)求,使得與服務(wù)器進(jìn)行數(shù)據(jù)交換變得更加容易。
正文
主要應(yīng)用場(chǎng)景包括:
與 RESTful API 進(jìn)行通信,獲取數(shù)據(jù)或執(zhí)行操作。
在客戶端應(yīng)用程序中訪問 Web 服務(wù)。
與第三方 API 進(jìn)行交互,如社交媒體平臺(tái)、支付網(wǎng)關(guān)等。
進(jìn)行 Web 數(shù)據(jù)抓取和爬蟲。
好處
簡(jiǎn)化了 HTTP 請(qǐng)求的構(gòu)建和發(fā)送過程。
提供了易于使用的接口,降低了與 RESTful API 交互的復(fù)雜性。
支持異步請(qǐng)求,避免阻塞主線程。
跨平臺(tái)支持,可以在 Windows、Linux、macOS 等操作系統(tǒng)上運(yùn)行。
常用方法
Execute: 執(zhí)行一個(gè)請(qǐng)求并返回響應(yīng)數(shù)據(jù)。
ExecuteAsync: 異步地執(zhí)行一個(gè)請(qǐng)求并返回響應(yīng)數(shù)據(jù)。
AddParameter: 添加請(qǐng)求參數(shù),如查詢字符串、請(qǐng)求體等。
AddHeader: 添加請(qǐng)求頭。
AddJsonBody: 添加 JSON 格式的請(qǐng)求體。
AddFile: 添加文件作為請(qǐng)求的一部分。
AddCookie: 添加 Cookie。
AddUrlSegment: 替換 URL 中的占位符。
常用屬性
BaseUrl: 設(shè)置請(qǐng)求的基礎(chǔ) URL。
Timeout: 設(shè)置請(qǐng)求的超時(shí)時(shí)間。
Method: 設(shè)置請(qǐng)求的 HTTP 方法,如 GET、POST、PUT、DELETE 等。
RequestFormat: 設(shè)置請(qǐng)求的數(shù)據(jù)格式,如 XML、JSON 等。
Parameters: 獲取或設(shè)置請(qǐng)求的參數(shù)列表。
Headers: 獲取或設(shè)置請(qǐng)求的頭部信息。
StatusCode: 獲取響應(yīng)的 HTTP 狀態(tài)碼。
Content: 獲取響應(yīng)的原始內(nèi)容。
幾個(gè)例子
nuget 安裝 RestSharp

Get請(qǐng)求
private void btnGet_Click(object sender, EventArgs e)
{
var client = new RestClient("https://localhost:7137/api/");
var request = new RestRequest("User/User?id=2", Method.Get);
var response = client.Execute<x_user>(request);
var content = response.Content;
MessageBox.Show(content, "GET Response");
}

Post請(qǐng)求
private void btnPost_Click(object sender, EventArgs e)
{
var client = new RestClient("https://localhost:7137/api/");
var request = new RestRequest("User/SaveDb", Method.Post);
request.AddJsonBody(new { id = 100, name = "John", age = 16, job = "IT" });
var response = client.Execute<x_user>(request);
var content = response.Content;
MessageBox.Show(content, "POST Response");
}

添加請(qǐng)求頭和處理響應(yīng)
private void btnHeader_Click(object sender, EventArgs e)
{
var client = new RestClient("https://localhost:7137/api/");
var request = new RestRequest("User/SaveDb", Method.Post);
request.AddJsonBody(new { id = 100, name = "John", age = 16, job = "IT" });
//這個(gè)是添加Token請(qǐng)求,在現(xiàn)在應(yīng)用極廣
request.AddHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN");
var response = client.Execute<x_user>(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
// 處理響應(yīng)數(shù)據(jù)
var content = response.Content;
MessageBox.Show(content, "Response");
}
else
{
MessageBox.Show("Request failed with status: " + response.StatusCode, "Error");
}
}
上傳文件
private void btnUpload_Click(object sender, EventArgs e)
{
var client = new RestClient("https://localhost:7137/api");
var request = new RestRequest("User/UploadFile",Method.Post);
// 添加要上傳的文件
request.AddFile("file", @"d:\國(guó)學(xué).jpg");
// 可選:如果有其他參數(shù)需要一同提交,可以使用 AddParameter 方法
// request.AddParameter("paramName", "paramValue");
var response = client.Execute<bool>(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
Console.WriteLine("上傳文件成功");
}
else
{
Console.WriteLine("上傳出錯(cuò),錯(cuò)誤代碼: " + response.StatusCode);
}
}
該文章在 2024/5/27 10:44:53 編輯過