跳至页脚内容
.NET 帮助

Flurl C#(开发者用法)

在C#开发中,强大的库可以显著提高输出和能力。 两个可以很好协作的库是Flurl和IronPDF,它们分别为程序员提供了创建PDF和与在线API交互的强大工具。

Flurl提供了一种流畅且富有表现力的语法,使在C#中处理HTTP请求、API及其API端点变得更容易。 发送HTTP请求、响应这些请求以及管理查询参数或头信息是它简化的任务之一。 开发人员可以使用Flurl快速有效地管理身份验证、进行JSON序列化和反序列化,并消费Web API——同时编写易读且组织良好的代码。

开发人员可以利用Flurl的易用性和多功能性,与IronPDF结合使用,通过连接web API、检索数据,并轻松将其集成到IronPDF中,来创建详细和准备好的PDF文档。 通过这种集成,程序员可以设计复杂的应用程序,通过自动化从在线服务检索的实时数据生成文档,提高生产力和用户体验。

在这个介绍中,我们将研究如何在C#程序中使用和结合Flurl和IronPDF,强调它们在现代软件开发中的优势和协同潜力。

什么是Flurl C#?

Flurl是一个强大且用户友好的C#库,用于管理HTTP请求和与在线API通信。它提供了一种流畅、可链式的语法,改善了代码的可读性和可维护性,减少了与RESTful API交互的复杂性。开发人员可以轻松创建和提交HTTP请求,以简洁易懂的方式处理响应,并管理查询参数、头信息和有效负载。

Flurl最显著的特征之一是其动态管理URL构建的能力,这使得根据运行时情况创建和修改URL变得简单,并可用作独立的URL构建器。 其对JSON数据序列化和反序列化的强大支持搭配流行的HTTP特性如GET、POST、PUT、DELETE等。此外,Flurl还具有内置的管理表单数据和查询参数的功能,使其适应于多种API集成场景。

流畅接口

Flurl提供的流畅、可链式语法增强了程序的可读性和可维护性。 开发人员可以创建简单且富有表现力的HTTP请求,并使用URL、查询参数、头信息和有效负载。

HTTP方法支持

支持所有标准的HTTP方法,包括GET、POST、PUT、DELETE、PATCH、HEAD和OPTIONS。 由于这种全面的支持方案,开发人员在处理Web API时可以完成各种任务。

查询参数处理

Flurl提供简便的方法来修改、添加和移除URL中的查询参数。 这使得基于用户输入或运行时情况创建动态URL变得更容易。

JSON支持

Flurl本身支持JSON数据处理。 它可以轻松地将JSON响应反序列化为C#对象,并将对象序列化为请求负载的JSON。 因此,使用基于JSON的API既简单又便捷。

表单数据和多部分支持

它简化了多部分请求和表单数据的管理。 Flurl使得开发人员可以轻松地在HTTP请求中包含多部分/表单数据或表单编码的数据。

错误处理和重试策略

Flurl为所有HTTP调用提供重试策略定义和错误处理能力。 通过定义独特的错误处理逻辑或重试技术,开发人员可以增强API调用和交互的弹性和可靠性。 这还可以保护并帮助开发人员在响应中防止匿名对象错误。

身份验证

它支持多种流行的Web API身份验证方法,包括OAuth、自定义身份验证方案、基本身份验证和API密钥。 这确保了与需要身份验证的API进行安全通信。

测试支持

通过将HTTP相关逻辑隔离到具有不同关注点分离的可重用组件中,Flurl促进了可测试性。 这使得为API交互编写单元测试更简单,因为不需要进行实际网络调用来测试它们。

配置灵活性

它为HTTP客户端和请求参数提供配置灵活性。 开发人员可以更改客户端行为、超时、错误响应量、头信息和其他设置,以满足特定应用程序或API限制的需求。

可扩展性

由于其插件框架,Flurl非常可扩展。 开发人员可以通过构建自定义扩展或集成第三方插件来增加平台功能以获得更多功能。

创建和配置Flurl C#

以下是构建和配置C#项目中的Flurl的步骤:

创建一个新的Visual Studio项目

使用 Visual Studio 创建一个控制台项目很容易。 要在Visual Studio环境中启动一个控制台应用程序,请按照以下简单步骤操作:

在尝试使用之前,请确保计算机上已安装Visual Studio。

启动新项目

选择文件、项目,然后选择新建选项。

Flurl C#(它如何为开发人员工作):图1-单击新建选项

可以从下面的项目模板引用列表中选择“控制台应用程序”或“控制台应用程序(.NET Core)”模板。

请填写“名称”表单,以便为项目命名。

Flurl C#(它如何为开发人员工作):图2 - 提供名称和位置

选择存放项目的位置。

点击“创建”将打开控制台应用项目。

Flurl C#(它如何为开发人员工作):图3 - 单击“创建”

安装Flurl.Http包

第一步是使用NuGet包管理器控制台或Visual Studio中的NuGet包管理器来安装Flurl.Http包。

Install-Package Flurl.Http

创建一个FlurlClient配置

Flurl提供了FlurlClient类,使您可以仅使用URL构建器为每个传来的HTTP请求确定默认参数。 这是一个可选但有帮助的步骤,可以通过设置基础URL或默认头信息来实现。

using Flurl;
using Flurl.Http;

// Configure a FlurlClient instance with base URL and headers
FlurlClient flurlClient = new FlurlClient("https://api.example.com/");
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere");
using Flurl;
using Flurl.Http;

// Configure a FlurlClient instance with base URL and headers
FlurlClient flurlClient = new FlurlClient("https://api.example.com/");
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere");
Imports Flurl
Imports Flurl.Http

' Configure a FlurlClient instance with base URL and headers
Private flurlClient As New FlurlClient("https://api.example.com/")
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere")
$vbLabelText   $csharpLabel

发起HTTP请求

您现在可以使用Flurl的流畅URL发起HTTP请求。

var response = await "http://localhost:5013/users".GetAsync();
Console.WriteLine(response.ToString());

if (response.ResponseMessage.IsSuccessStatusCode)
{
    var result = await response.ResponseMessage.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
else
{
    Console.WriteLine($"Error: {response.StatusCode}");
}
var response = await "http://localhost:5013/users".GetAsync();
Console.WriteLine(response.ToString());

if (response.ResponseMessage.IsSuccessStatusCode)
{
    var result = await response.ResponseMessage.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
else
{
    Console.WriteLine($"Error: {response.StatusCode}");
}
Dim response = await "http://localhost:5013/users".GetAsync()
Console.WriteLine(response.ToString())

If response.ResponseMessage.IsSuccessStatusCode Then
	Dim result = Await response.ResponseMessage.Content.ReadAsStringAsync()
	Console.WriteLine(result)
Else
	Console.WriteLine($"Error: {response.StatusCode}")
End If
$vbLabelText   $csharpLabel

Flurl C#(它如何为开发人员工作):图4-示例控制台输出

处理响应

为了管理根据预期格式(JSON、字符串等)的响应内容,Flurl的HttpResponseMessageExtensions提供了扩展方法,例如ReceiveJson和ReceiveString。

// Handling JSON response
var responseObject = await "https://api.example.com/resource"
    .WithClient(flurlClient)
    .GetJsonAsync<ResponseType>();
// Assuming ResponseType is a class representing the expected JSON structure
Console.WriteLine($"Response: {responseObject.Property}");
// Handling JSON response
var responseObject = await "https://api.example.com/resource"
    .WithClient(flurlClient)
    .GetJsonAsync<ResponseType>();
// Assuming ResponseType is a class representing the expected JSON structure
Console.WriteLine($"Response: {responseObject.Property}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

其他配置

  • 查询参数:要添加查询参数,请使用.SetQueryParams()方法。 确保每个请求都使用相同的HttpClient实例运行,以提高效率。

  • 超时:例如,您可以使用.WithTimeout(TimeSpan.FromSeconds(30))来设置超时。

  • 错误处理:为了处理特定错误场景,请使用.OnError()

开始

当您需要从远程API获取数据并使用该数据创建PDF文档时,将Flurl与IronPDF结合在C#项目中会很有帮助。 要开始使用Flurl和IronPDF,请遵循以下步骤:

什么是IronPDF

名为IronPDF的功能丰富的.NET库可用于C#程序中创建、读取和修改PDF文档。 借助此工具,开发人员可以快速从HTML、CSS和JavaScript内容生成可打印的高质量PDF。 一些基本功能包括水印功能、创建页眉和页脚、拆分和合并PDF以及将HTML转换为PDF的能力。 IronPDF支持.NET Framework和.NET Core,使其适用于各种应用程序。

由于PDF易于集成并拥有丰富的详细文档,开发人员可以轻松地在他们的应用程序中使用它们。 IronPDF通过高效处理复杂的布局和样式,确保生成的PDF与源HTML内容相近。

IronPDF使将网页、URL及HTML转换为高质量的PDF变得超级简单,看起来与原始内容完全一致。 它非常适合于生成在线报告、发票等PDF。 如果您一直在寻找一种将HTML转换为PDF的方法,IronPDF可以满足您的需求!

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        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");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        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)
		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
$vbLabelText   $csharpLabel

Flurl C#(它如何为开发人员工作):图5 - IronPDF:C# PDF库

IronPDF的功能

从HTML生成PDF

将JavaScript、HTML和CSS转换为PDF。 支持媒体查询和响应式设计,这两个是现代的网络标准。 在动态装饰PDF报告、发票和文件时使用HTML和CSS非常有用。

PDF编辑

可以添加文本、图片和其他内容到已有的PDF中。 可以从PDF文件中删除文本和图片。 能将多个PDF合并成一个文件。可以将PDF文件分成多个独立的文档。 可以加入水印、注释、页眉和页脚。

PDF转换

将多种文件类型,包括Word、Excel和图片文件,转换为PDF格式。 PDF到图像转换(PNG、JPEG等)。

性能和可靠性

在工业环境中,高性能和高可靠性是期望的设计品质,因为它们可以有效地管理多重文档。

安装IronPDF

为了在.NET项目中获得处理PDF所需的工具,请安装IronPDF包。

Install-Package IronPdf

使用Flurl获取数据生成PDF

为了使用Flurl的流畅API向您的API发起HTTP查询并获取数据。 这是一个获取JSON数据的案例:

using Flurl;
using Flurl.Http;
using IronPdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            var response = await "http://localhost:5013/users/1".GetJsonAsync<User>();
            var id = response?.Id;
            var name = response?.Name;
            Console.WriteLine($"Data fetched successfully: {name}");

            // Generate PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            string htmlTemplate = $@"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>";

            // Generate PDF document from HTML template
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);

            // Save or stream the PDF document
            pdfDocument.SaveAs(@"document.pdf");
            Console.WriteLine("PDF document generated successfully.");
        }
        catch (FlurlHttpException ex)
        {
            Console.WriteLine($"HTTP Error: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

// Example model class for JSON deserialization
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
using Flurl;
using Flurl.Http;
using IronPdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            var response = await "http://localhost:5013/users/1".GetJsonAsync<User>();
            var id = response?.Id;
            var name = response?.Name;
            Console.WriteLine($"Data fetched successfully: {name}");

            // Generate PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            string htmlTemplate = $@"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>";

            // Generate PDF document from HTML template
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);

            // Save or stream the PDF document
            pdfDocument.SaveAs(@"document.pdf");
            Console.WriteLine("PDF document generated successfully.");
        }
        catch (FlurlHttpException ex)
        {
            Console.WriteLine($"HTTP Error: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

// Example model class for JSON deserialization
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Imports Flurl
Imports Flurl.Http
Imports IronPdf
Imports System
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Try
			Dim response = await "http://localhost:5013/users/1".GetJsonAsync(Of User)()
			Dim id = response?.Id
			Dim name = response?.Name
			Console.WriteLine($"Data fetched successfully: {name}")

			' Generate PDF using IronPDF
			Dim renderer = New ChromePdfRenderer()
			Dim htmlTemplate As String = $"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>"

			' Generate PDF document from HTML template
			Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate)

			' Save or stream the PDF document
			pdfDocument.SaveAs("document.pdf")
			Console.WriteLine("PDF document generated successfully.")
		Catch ex As FlurlHttpException
			Console.WriteLine($"HTTP Error: {ex.Message}")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		End Try
	End Function
End Class

' Example model class for JSON deserialization
Public Class User
	Public Property Id() As Integer
	Public Property Name() As String
End Class
$vbLabelText   $csharpLabel

在此示例中,Flurl的.GetJsonAsync()函数用于发起GET请求并获取JSON数据。 将User替换为您表示API响应结构的模型类,并将“URL”替换为您的实际API端点。 可以使用IronPDF的ChromePdfRenderer类将HTML模板(htmlTemplate)渲染为PDF文档。 在这里,从API获取的标题和正文数据用于动态构建HTML模板。 生成的PDF文档(pdfDocument)被保存到文件系统指定的位置("document.pdf")。 根据需要修改路径。

Flurl C#(它如何为开发人员工作):图6-示例控制台输出

为处理诸如网络故障(FlurlHttpException)或在数据获取或PDF生产期间发生的一般异常(Exception)等问题提供强大的错误处理。 您可以使用IronPDF更改页面大小、边距、页眉、页脚及其他PDF设置。 有关更高级自定义选项,请参见IronPDF的方式手册。 在向API发送HTTP查询时,请确保安全地处理敏感数据和访问令牌。 使用您的API所需的正确身份验证方法。

结论

综上所述,将IronPDF用于PDF生成与Flurl用于API交互结合在C#应用程序中提供了一种强大的组合,能够动态检索数据并生成高质量的PDF文档。 通过其流畅的API,Flurl库精简了HTTP请求,并在从远程端点获取数据时提供灵活性和用户友好性。 此外,IronPDF还促进了HTML内容向PDF格式的简易转化,提供了页眉、边距、页面大小等可调节的特性。

在实现此集成方案时,还需要考虑速度优化、数据安全性和错误处理。 通过遵循最佳实践并利用Flurl和IronPDF的优势,开发人员可以创建可靠且可扩展的解决方案,成功满足现代应用的需求。

IronPDF和Iron Software的套件通过结合Iron Software高度灵活的系统和套件及其核心支持,提供额外的在线应用和功能以及更高效的开发。

如果许可选择明确且具体到项目需求,开发人员就更能判断哪种模式是理想且最佳实践。这些好处可以让开发人员以清晰、有说服力的和无缝集成的方式来处理各种问题。

常见问题解答

我如何使用 Flurl 从 API 中获取数据在 C# 中?

Flurl 提供了一个流畅的 API 来进行 HTTP 请求,使从 API 获取数据变得容易。您可以使用像 GetAsync 这样的方法来检索数据并直接在 C# 中处理响应。

使用 Flurl 的流畅语法在 C# 中有哪些优势?

Flurl 的流畅语法通过允许开发人员无缝链接方法调用来增强代码的可读性和可维护性,从而简化创建和发送 HTTP 请求的过程。

Flurl 如何在进行 HTTP 请求时处理身份验证?

Flurl 支持各种身份验证方法,包括 OAuth 和 API 密钥,通过允许您在 HTTP 请求中包含身份验证凭证来实现安全的 API 交互。

Flurl 如何简化 API 请求中的错误处理?

Flurl 提供强大的错误处理功能和重试策略,允许开发人员实现自定义错误处理逻辑和重试机制,以确保其应用程序中可靠的 API 交互。

如何在C#中将HTML转换为PDF?

您可以使用 IronPDF 将 HTML 内容转换为 C# 中的 PDF。IronPDF 支持将 HTML、CSS 和 JavaScript 转换为高质量的 PDF,同时允许添加诸如页眉、页脚和水印等附加功能。

Flurl 和 PDF 生成库可以集成到 C# 应用程序中吗?

可以,Flurl 可用于从 API 中检索数据,然后可以使用像 IronPDF 这样的库来处理和转换为 PDF 文档。这种集成允许基于实时数据的动态 PDF 生成。

使用 Flurl 进行 HTTP 请求在 C# 中有哪些好处?

Flurl 通过提供简单的接口来处理各种 HTTP 方法、身份验证和错误管理,改善了管理 HTTP 请求的生产力和代码清晰度,使其成为现代 API 驱动应用程序的理想选择。

PDF 生成库如何处理响应式设计?

IronPDF 支持媒体查询和响应式设计,确保 HTML 内容在生成的 PDF 中能够准确呈现,无论原本是为哪个设备或屏幕尺寸设计的。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。