
RestSharp C#(开发者用法)
RestSharp 是一个流行的开源 .NET 库,用于在 C# 中进行 HTTP 请求。 它简化了与 RESTful API 的交互过程,提供了一种简单灵活的方式与网络服务进行通讯。 在本文中,我们将探索 RestSharp 和 IronPDF 的关键特性,并展示如何提取数据并生成 PDF。
为什么选择 RestSharp?
在现代多层应用程序中,不同的服务经常需要互相通信,RestSharp 通过封装所有复杂性提供了一种简单且高效的方法。 这大大简化了软件开发过程。
安装 RestSharp
RestSharp 作为 NuGet 包提供,可以安装到您的 C# 项目中。 您可以使用 NuGet 包管理器控制台或 Visual Studio NuGet 包管理器 UI 进行此操作。
进行简单的 GET 请求
让我们从一个简单的例子开始,使用 RestSharp 向一个 RESTful API 发出 GET 请求。假设我们要从一个返回用户数据的公共 ASP.NET core API 中检索信息:
using RestSharp;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
// Base URL for the REST API
var baseUrl = "https://jsonplaceholder.typicode.com/users";
// Create a RestClientOptions with default credentials
var options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Create a RestRequest for the GET method
var request = new RestRequest();
// Execute the request and get the response
var response = client.Get(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Output the response body content
Console.WriteLine(response.Content);
}
else
{
// Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
// Additional method to log data
public void LogData(string msg)
{
Console.WriteLine(msg);
}
}
}Imports RestSharp
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
' Base URL for the REST API
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
' Create a RestClientOptions with default credentials
Dim options = New RestClientOptions(baseUrl) With {
.UseDefaultCredentials = True
}
Dim client = New RestClient(options)
' Create a RestRequest for the GET method
Dim request = New RestRequest()
' Execute the request and get the response
Dim response = client.Get(request)
' Check if the request was successful
If response.IsSuccessful Then
' Output the response body content
Console.WriteLine(response.Content)
Else
' Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
' Additional method to log data
Public Sub LogData(msg As String)
Console.WriteLine(msg)
End Sub
End Class
End NamespaceRestSharp 还支持使用异步 API 方法进行异步请求和响应。
处理响应数据
RestSharp 提供了方便的方法,将响应内容反序列化为 C# 对象。 让我们扩展我们的示例,将 JSON 响应数据反序列化为用户对象的列表:
// Deserialize JSON response into a list of User objects
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Output user information
foreach (var user in users)
{
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email: {user.Email}");
}' Deserialize JSON response into a list of User objects
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Output user information
For Each user In users
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email: {user.Email}")
Next user在这个例子中,我们定义了一个User类,其属性对应于JSON字段。 我们使用了System.Text.Json命名空间。
public class User
{
[JsonPropertyName("company")]
public Company Company { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("phone")]
public string Phone { get; set; }
[JsonPropertyName("website")]
public string Website { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("username")]
public string Username { get; set; }
[JsonPropertyName("email")]
public string Email { get; set; }
[JsonPropertyName("address")]
public Address Address { get; set; }
}Public Class User
<JsonPropertyName("company")>
Public Property Company As Company
<JsonPropertyName("id")>
Public Property Id As Integer
<JsonPropertyName("phone")>
Public Property Phone As String
<JsonPropertyName("website")>
Public Property Website As String
<JsonPropertyName("name")>
Public Property Name As String
<JsonPropertyName("username")>
Public Property Username As String
<JsonPropertyName("email")>
Public Property Email As String
<JsonPropertyName("address")>
Public Property Address As Address
End Class输出
所有用户 ID 和名称都显示在输出中。

完整代码可以在 Git 此链接中找到。
内容类型
RestSharp 支持发送 XML 或 JSON 正文请求。 AddXmlBody方法可用于添加JSON或XML正文。 RestSharp 会自动设置内容类型。 它会自动处理 JSON 或 XML 响应。
// Serialize the user object to JSON
var jsonBodyString = JsonSerializer.Serialize(newUser);
// Create a RestRequest for the POST method with the JSON request data
var requestData = new RestRequest().AddJsonBody(jsonBodyString);
var response = client.ExecutePost(requestData);' Serialize the user object to JSON
Dim jsonBodyString = JsonSerializer.Serialize(newUser)
' Create a RestRequest for the POST method with the JSON request data
Dim requestData = (New RestRequest()).AddJsonBody(jsonBodyString)
Dim response = client.ExecutePost(requestData)使用 POST 请求发送数据
RestSharp 还支持在请求正文中发送数据,这在创建或更新资源时很常见。 让我们修改我们的示例以演示 POST 请求 API:
using RestSharp;
using System.Text.Json;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
var client = new RestClient("https://jsonplaceholder.typicode.com/users");
// New user object
var newUser = new User
{
Name = "John Doe",
Email = "john.doe@example.com"
};
// Serialize the user object to JSON
var jsonBody = JsonSerializer.Serialize(newUser);
// Create a RestRequest for the POST method with the JSON request body
var request = new RestRequest().AddJsonBody(jsonBody);
// Execute the POST request
var response = client.ExecutePost(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Output the response content
Console.WriteLine(response.Content);
}
else
{
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
}
}Imports RestSharp
Imports System.Text.Json
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
Dim client = New RestClient("https://jsonplaceholder.typicode.com/users")
' New user object
Dim newUser = New User With {
.Name = "John Doe",
.Email = "john.doe@example.com"
}
' Serialize the user object to JSON
Dim jsonBody = JsonSerializer.Serialize(newUser)
' Create a RestRequest for the POST method with the JSON request body
Dim request = New RestRequest().AddJsonBody(jsonBody)
' Execute the POST request
Dim response = client.ExecutePost(request)
' Check if the request was successful
If response.IsSuccessful Then
' Output the response content
Console.WriteLine(response.Content)
Else
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
End Class
End Namespace在这个例子中,我们创建一个新的AddJsonBody方法将其包含在请求正文中。 服务器接收 JSON 数据并相应处理请求。
输出

认证
RestSharp 还支持发送带有认证的请求。 RestClientOptions可以包含认证参数。
var options = new RestClientOptions("https://auth.net")
{
Authenticator = new HttpBasicAuthenticator(_clientId, _clientSecret)
};Dim options = New RestClientOptions("https://auth.net") With {.Authenticator = New HttpBasicAuthenticator(_clientId, _clientSecret)}这里我们使用基本的客户端 ID 密钥认证,每次请求都会发送。
错误处理
RestSharp 可以处理在 URL 请求期间发生的错误,例如超时、身份验证或授权错误。 如果请求失败,RestSharp 不会自动抛出异常。 需要手动进行配置。
可以进行以下错误处理配置:
- FailOnDeserializationError: 将此属性设置为true会告诉RestSharp将反序列化失败视为错误,并相应地设置
Error。 - **ThrowOnDeserializationError:**将此属性设置为 true 将告诉 RestSharp 在反序列化失败时抛出异常。
- **ThrowOnAnyError:**如果在发出请求或反序列化过程中发生任何错误,则抛出异常。
var restClientOptions = new RestClientOptions(url)
{
ThrowOnAnyError = true
};
var client = new RestClient(restClientOptions);Dim restClientOptions As New RestClientOptions(url) With {.ThrowOnAnyError = True}
Dim client = New RestClient(restClientOptions)IronPDF 简介
IronPDF 是 Iron Software 提供的一个 C# PDF 库,帮助读取和生成 PDF 文档。 它可以轻松将格式化的文档带有样式信息转换为PDF。 IronPDF 可以轻松地从 HTML 内容生成 PDF; 它可以从 URL 下载 HTML 并生成 PDF。
IronPDF 的一个关键功能是 HTML 到 PDF 转换,保留所有布局和样式。 它将网页内容转换为 PDF,使其非常适合用于报告、发票和文档。 HTML 文件、网址和 HTML 字符串可以轻松转换为 PDF。
using IronPdf;
class Program
{
static void Main(string[] args)
{
// Create a PDF renderer using Chrome
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a PDF renderer using Chrome
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class安装 IronPDF 库
要通过 NuGet 包管理器将 IronPDF 集成到您的 Selenium RestSharp 项目中,请按照以下步骤操作:
- 打开 Visual Studio,并在解决方案资源管理器中右键单击您的项目。
- 从上下文菜单中选择"管理 NuGet 包..."。
- 转到浏览选项卡并搜索IronPDF。
- 从搜索结果中选择 IronPDF 库,然后单击安装按钮。
- 接受任何许可协议提示。
如果您想通过包管理器控制台在项目中包含 IronPDF,请在包管理器控制台中执行以下命令:
它将获取并安装 IronPDF 到您的项目中。
使用 NuGet 网站安装
有关 IronPDF 的详细概述,包括其功能、兼容性和其他下载选项,请访问 NuGet 网站上的 IronPDF 页面 https://www.nuget.org/packages/IronPdf。
通过 DLL 安装
或者,您可以通过其 DLL 文件直接将 IronPDF 集成到您的项目中。从 IronPDF 下载中下载包含 DLL 的 ZIP 文件。 解压缩并将 DLL 包含在项目中。
现在我们将获取所有用户并使用 HTML 字符串和 IronPDF 生成器生成 PDF 报告。
using System.Text.Json;
using System.Text.Json.Serialization;
using RestSharp;
using IronPdf;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
// Create a RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Create a RestRequest for the GET method
var request = new RestRequest();
// Execute the request and get the response
var response = client.Get(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Deserialize JSON response into a list of User objects
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Generate PDF
var html = GetHtml(users);
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("UsersReport.pdf");
}
else
{
// Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
// Method to generate HTML from user data
private static string GetHtml(List<User>? users)
{
string header = @"
<html>
<head><title>Users List</title></head>
<body>
";
var footer = @"
</body>
</html>";
var htmlContent = header;
foreach (var user in users)
{
htmlContent += $@"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
";
}
htmlContent += footer;
return htmlContent;
}
}
}Imports System.Text.Json
Imports System.Text.Json.Serialization
Imports RestSharp
Imports IronPdf
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
' Create a RestClient
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
Dim options As New RestClientOptions(baseUrl) With {.UseDefaultCredentials = True}
Dim client As New RestClient(options)
' Create a RestRequest for the GET method
Dim request As New RestRequest()
' Execute the request and get the response
Dim response = client.Get(request)
' Check if the request was successful
If response.IsSuccessful Then
' Deserialize JSON response into a list of User objects
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Generate PDF
Dim html = GetHtml(users)
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("UsersReport.pdf")
Else
' Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
' Method to generate HTML from user data
Private Shared Function GetHtml(users As List(Of User)) As String
Dim header As String = "
<html>
<head><title>Users List</title></head>
<body>
"
Dim footer As String = "
</body>
</html>"
Dim htmlContent As String = header
For Each user In users
htmlContent += $"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
"
Next
htmlContent += footer
Return htmlContent
End Function
End Class
End Namespace完整代码可以在 Git 此链接中找到。
这里我们首先从用户列表生成 HTML 字符串,并进行所有格式设置以生成报告。 然后我们用IronPDF生成PDF文档。 我们使用RenderHtmlAsPdf方法将HTML字符串转换为PDF文档。 生成的文档如下:

该文档对试用版许可证有一个小水印,可以通过使用有效的许可证来移除。
许可(提供免费试用)
为了让上述代码工作,需要许可证密钥。 这个密钥需要放置在appsettings.json中,如下所示:
{
"IronPdf.LicenseKey": "your license key"
}
开发人员在注册时可以获得一个 试用许可证,不需要信用卡。 可以提供他们的电子邮件 ID 并注册免费试用。
结论
RestSharp 库简化了在 C# 中与 RESTful API 交互的过程,提供了一种干净高效的方式来创建 HTTP 请求和处理响应。 无论您是通过 GET 请求检索数据还是通过 POST 请求发送数据,RestSharp 直观的 API 和便捷的功能都使其成为开发人员构建与网络服务交互的应用程序的有价值的工具。
IronPDF 提供了一种灵活且易于使用的 PDF 生成解决方案。 有关 IronPDF 各种功能的更多信息,请访问 IronPDF 文档页面。
IronPDF 的永久 许可证将帮助您提升编码技能,实现现代应用程序需求。
掌握 RestSharp 和 IronPDF 都是很大的技能,能够帮助开发人员创建现代应用程序。

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。
相关文章


