C# RestSharp
上次修改时间:2023 年 7 月 14 日
在本文中,我们将展示如何使用 C# 中的 RestSharp 库创建 HTTP 请求。
超文本传输协议 (HTTP) 是一种用于分布式、协作式、超媒体信息系统的应用协议。 HTTP 是万维网数据通信的基础。
RestSharp 是一个用于 .NET 的简单 REST 和 HTTP API 客户端。
C# RestSharp GET 请求
GET 方法请求指定资源的表示形式。GetAsync 使用 GET HTTP 方法异步执行请求。
using RestSharp;
using System.Text.Json;
using System.Text.Json.Nodes;
string url = "https://jsonplaceholder.typicode.com";
using var client = new RestClient(url);
var req = new RestRequest("todos/3");
var resp = await client.GetAsync(req);
var data = JsonSerializer.Deserialize<JsonNode>(resp.Content!)!;
Console.WriteLine(data["id"]);
Console.WriteLine(data["title"]);
Console.WriteLine(data["completed"]);
Console.WriteLine(data);
我们生成一个对在线测试 API 的异步 GET 请求。
string url = "https://jsonplaceholder.typicode.com";
我们定义 URL。
var client = new RestClient(url);
var req = new RestRequest("todos/3");
var resp = await client.GetAsync(req);
我们构建一个 RestClient 并使用 GetAsync 方法执行一个异步请求。
var data = JsonSerializer.Deserialize<JsonNode>(resp.Content!)!;
我们将 JSON 字符串响应反序列化为 JsonNode 对象。
Console.WriteLine(data["id"]); Console.WriteLine(data["title"]); Console.WriteLine(data["completed"]);
我们打印数据对象的字段。
$ dotnet run
3
fugiat veniam minus
false
{
"userId": 1,
"id": 3,
"title": "fugiat veniam minus",
"completed": false
}
在下一个示例中,我们将返回的数据反序列化为自定义对象。
using RestSharp;
using System.Text.Json;
using var client = new RestClient("https://jsonplaceholder.typicode.com");
var req = new RestRequest("todos/4");
var resp = await client.GetAsync(req);
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
var todo = JsonSerializer.Deserialize<Todo>(resp.Content!, options)!;
Console.WriteLine(todo.UserId);
Console.WriteLine(todo.Id);
Console.WriteLine(todo.Title);
Console.WriteLine(todo.Completed);
public class Todo
{
public int UserId { get; set; }
public int Id { get; set; }
public string? Title { get; set; }
public bool Completed { get; set; }
}
返回的数据被反序列化为 Todo 对象。
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
我们定义 JsonSerializerOptions。
var todo = JsonSerializer.Deserialize<Todo>(resp.Content!, options)!;
我们使用 JsonSerializer.Deserialize 使用数据填充 Todo 对象的属性。
Console.WriteLine(todo.UserId); Console.WriteLine(todo.Id); Console.WriteLine(todo.Title); Console.WriteLine(todo.Completed);
我们打印 todo 对象的字段。
$ dotnet run 1 4 et porro tempora True
C# RestSharp HEAD 请求
HTTP HEAD 方法请求如果使用 HTTP GET 方法请求指定的资源但没有其主体,则返回的标头。
HEAD 请求使用 Head/HeadAsync 生成。
using RestSharp;
var client = new RestClient("http://webcode.me");
var req = new RestRequest("/");
var resp = client.Head(req);
foreach (var header in resp.Headers!)
{
Console.WriteLine(header);
}
我们生成一个对资源的 HEAD 请求并打印返回的标头。
var resp = client.Head(req);
我们生成一个同步 HEAD 请求。
foreach (var header in resp.Headers!)
{
Console.WriteLine(header);
}
我们迭代响应的 Headers 属性。
$ dotnet run Server=nginx/1.6.2 Date=Sat, 15 Jul 2023 12:14:46 GMT Connection=keep-alive
C# RestSharp User-Agent
User-Agent 请求标头是一个字符串,允许服务器和网络对等方识别请求用户代理的应用程序、操作系统、供应商和/或版本。
using RestSharp;
string url = "http://webcode.me";
using var client = new RestClient(url);
client.AddDefaultHeader("User-Agent", "C# console program");
string resource = "/ua.php";
var req = new RestRequest(resource);
var resp = await client.GetAsync(req);
Console.WriteLine(resp.Content);
该程序使用 AddDefaultHeader 方法设置 User-Agent 标头。
$ dotnet run C# console program
C# RestSharp POST JSON
我们使用 PostAsync 方法发布 JSON 数据。
using System.Text.Json;
using RestSharp;
using System.Net.Http;
var person = new Person("John Doe", "gardener");
var json = JsonSerializer.Serialize(person);
var url = "https://httpbin.org";
using var client = new RestClient(url);
var req = new RestRequest("/post");
req.AddJsonBody(json);
var response = await client.PostAsync(req);
Console.WriteLine(response.Content);
record Person(string Name, string Occupation);
该程序向包含 JSON 数据的在线测试网站发送 POST 请求。
var person = new Person("John Doe", "gardener");
var json = JsonSerializer.Serialize(person);
我们使用 JsonSerializer.Serialize 将 Person 对象序列化为 JSON 字符串。
var req = new RestRequest("/post");
req.AddJsonBody(json);
我们使用 AddJsonBody 将 JSON 字符串添加到请求的正文中。
var response = await client.PostAsync(req); Console.WriteLine(response.Content);
我们生成一个 POST 请求并打印响应内容。
$ dotnet run
{
...
"json": {
"Name": "John Doe",
"Occupation": "gardener"
},
...
"url": "https://httpbin.org/post"
}
来源
在本文中,我们使用了 RestSharp 库来创建 HTTP 请求。
作者
列出所有 C# 教程。