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