.NET 幫助

HttpListener C#(它如何為開發人員工作)

發佈 2024年8月13日
分享:

介紹

在 C# 中,用於構建基礎獨立 Web 伺服器的最有用工具之一是 HttpListener 類。 它包含在 System.Net 命名空间中,提供了一种接收和回复的方法。超文本傳輸協定來自客戶的請求。 這對於在桌面程式中管理基於網路的通信或構建輕量級的在線服務特別有幫助。

名為 的 .NET 庫IronPDF 用於 PDF 處理用於生成、修改和提取 PDF 文件中的內容。 它提供了全面的功能,可以從HTML創建PDF,將現有的PDF轉換為不同格式,並使用程式設計來修改PDF。

開發人員可以結合使用 HttpListener 和 IronPDF 設計網路服務,以動態生成並提供 PDF 文件來響應 HTTP 請求。 需要根據用戶輸入或其他動態數據即時生成 PDF 的應用程序可能會發現這非常有用。

什麼是 HttpListener C#?

HttpListener 文件指南是一個簡單而靈活的類,位於.NET Framework的System.Net命名空間中,使開發人員能夠用C#設計不複雜的HTTP伺服器。 其目的是接收客戶端的 HTTP 請求、處理它們,並以正確的資訊回覆。 由於不需要像 IIS 這樣的全功能網路伺服器,此類別是輕量級、獨立的網路服務或將網路通訊功能整合到桌面程式中的絕佳選擇。

HttpListener C#(對開發人員的運作方式):圖1

開發人員可以使用 HttpListener 設置 URI 前綴,以確定伺服器應監聽哪些地址。 一旦啟動監聽器,它會回應所有傳入的請求,並使用 HttpListenerContext 提供對請求和回應對象的訪問。 此配置使得可以創建符合應用程式需求的 HTTP 請求處理邏輯。 HttpListener 的使用方便性與適應性,使其在需要快速、有效且可配置的 HTTP 伺服器的情況下尤其有用。 HttpListener 提供了一個穩定且無額外負擔的解決方案,用於開發本地伺服器以進行測試,原型設計線上服務,或將通訊協定整合到桌面應用程式中。

HttpListener C# 的功能

C# 的 HttpListener 擁有多項功能,使其成為構建 HTTP 伺服器的有效工具。 基本要素包括:

易用性: HttpListener 是一個易於使用的庫,使程序員可以撰寫較少的代碼來建立基本的 HTTP 伺服器。

URI 前綴: 可以指定多個 URI 前綴來進行監聽,這提供了靈活性以處理各種端點,並保證服務器只對相關的查詢做出反應。

非同步操作: HttpListener 支援非同步方法,透過有效地同時處理多個請求而不中斷主執行緒,提升伺服器的可擴展性和響應能力。

身份驗證: 您可以根據需要使用 HttpListener 支援的多種身份驗證技術來保護您的端點,例如基本驗證、摘要驗證、NTLM 和整合 Windows 驗證。

HTTPS 支援:可以設置 HttpListener 以回應 HTTPS 請求,例如,實現安全的客戶端-伺服器數據通信。

請求與回應處理:HttpListener 讓您對請求和回應過程擁有完全控制權,您可以透過添加新的標頭、狀態代碼和內容類型來修改回應,並可讀取請求資料、標頭和參數。

Listener Configuration: HttpListener 提供特定於偵聽器的配置選項,以調整伺服器行為,例如證書管理。(適用於 HTTPS)超時和其他參數。

日誌和診斷: 啟用日誌和診斷,提供全面的請求和回應信息,以促進監控和故障排除。

相容性: 由於其功能與其他 .NET 組件和庫相容,因此允許與當前 .NET 服務和應用程式順利整合。

跨平台: HttpListener 與 Windows、Linux 和 macOS 相容,且可用於 .NET Core 和 .NET 5+,提供跨平台開發的靈活性。

創建及設置 HttpListener C

在 C# 中创建和配置 HttpListener 涉及多个步骤。 以下是關於配置 HttpListener 以處理 HTTP 請求的詳細教學。

建立一個新的 .NET 專案

打開命令提示符、控制台或終端。

通過輸入啟動新創建的 .NET 主控台應用程式

dotnet new console -n HttplistenerExample
cd HttplistenerExample
dotnet new console -n HttplistenerExample
cd HttplistenerExample
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

建立 HttpListener 實例

首先,创建一个 HttpListener 类的实例。

設定 URI 前綴

新增 URI 前綴詞以指定聆聽者應處理哪些地址。

啟動監聽器

啟動 HttpListener 開始監聽傳入的 HTTP 請求。

處理傳入請求

創建一個循環來處理傳入的請求、處理它們並發送回應。

停止監聽器

在不再需要時優雅地停止 HttpListener。

以下是這些階段中實際應用的一個例子的說明:

using System;
using System.Net;
using System.Text;
class Program
{
    public static string url="http://localhost:8080/";
    public static HttpListener listener;
    public static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        listener = new HttpListener();
        // Step 2: Configure URI prefixes
        listener.Prefixes.Add(url);
        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on "+url);
        // Step 4: Handle incoming requests
        // Wait for an incoming request
        while (true)
        {
            // getcontext method blocks
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            // Process the request (e.g., log the request URL with or without query string)
            Console.WriteLine($"Received request for {request.Url}");
            // Create a response
            HttpListenerResponse response = context.Response;
            // add response info
            string responseString = "<html><body>Hello, world!</body></html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
            // Set the content length and type
            response.ContentLength64 = buffer.Length;
            response.ContentType = "text/html";
            // Write the response to the output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(buffer, 0, buffer.Length);
            }
            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
using System;
using System.Net;
using System.Text;
class Program
{
    public static string url="http://localhost:8080/";
    public static HttpListener listener;
    public static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        listener = new HttpListener();
        // Step 2: Configure URI prefixes
        listener.Prefixes.Add(url);
        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on "+url);
        // Step 4: Handle incoming requests
        // Wait for an incoming request
        while (true)
        {
            // getcontext method blocks
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            // Process the request (e.g., log the request URL with or without query string)
            Console.WriteLine($"Received request for {request.Url}");
            // Create a response
            HttpListenerResponse response = context.Response;
            // add response info
            string responseString = "<html><body>Hello, world!</body></html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
            // Set the content length and type
            response.ContentLength64 = buffer.Length;
            response.ContentType = "text/html";
            // Write the response to the output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(buffer, 0, buffer.Length);
            }
            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

下面包含的 C# 代碼介紹了建立和配置 HttpListener 的過程,它作為一個基本的 HTTP 伺服器運作。 為了定義將處理請求的地址,它首先實例化一個 HttpListener 對象並附加一個 URI 前綴。(http://localhost:8080/). 接下來,使用 Start 方法來啟動監聽器。 我們使用不確定的 while 迴圈不斷監聽新的 HTTP 請求。 GetContext 在迴圈中等待請求,然後返回一個包含請求和響應物件的 HttpListenerContext 物件。

HttpListener C#(開發人員如何運作):圖 2

在記錄請求 URL 之後,會建立一個簡單的 HTML 和回應物件,轉換成位元組陣列,然後發送到回應輸出流。 在將響應返回給客戶之前,會正確指定該響應的類型和持續時間。 迴圈意味著伺服器不斷處理請求,一個接著一個。 需要調用 halt 方法來停止請求控制台的監聽器,但在這種情況下,無限循環阻止其被達到。

HttpListener C#(它對開發者的工作原理):圖 3

入門

IronPDF 可讓您在 .NET 中製作和更改高品質的 PDF 檔案,這是您創建文件和報告所需的。 HttpListener 的內建 HTTP 伺服器功能允許您在小型應用程式或服務中管理網路請求。 這兩個工具在各自的領域提高了 .NET 應用程序的實用性和速度。 要開始使用 C# 的 HttpListener 並將其與 IronPDF 整合以創建 PDF,請執行以下操作:

什麼是 IronPDF?

功能豐富的 .NET 庫IronPDF for C#允許 C# 程式生成、閱讀和編輯 PDF 文件。 藉由這個工具,開發者可以迅速將 HTML、CSS 和 JavaScript 資料轉換為高品質且可列印的 PDF。 在最關鍵的任務中,包括添加頁首和頁尾、拆分和合併PDF、為文檔添加水印以及將HTML轉換為PDF。 IronPDF 對於多種應用程序都很有幫助,因為它支持 .NET Framework 和 .NET Core。

由於 PDF 易於使用且包含大量資訊,開發人員可以輕鬆地將其納入產品中。 由於 IronPDF 能夠處理複雜的數據佈局和格式化,因此它生成的 PDF 輸出看起來非常像客戶端或原始的 HTML 文本。

HttpListener C#(它如何為開發者工作):圖4

IronPDF 的功能

從 HTML 生成 PDF

將 JavaScript、HTML 和 CSS 轉換為 PDF。 IronPDF 支援媒體查詢和響應式設計,這兩個當代的網頁標準。 其對現代網頁標準的支持有助於用 HTML 和 CSS 動態裝飾 PDF 報告、發票和文件。

PDF 編輯

現有的 PDF 可以添加文字、圖片和其他內容。 使用 IronPDF,開發人員可以從 PDF 文件中提取文本和圖像,將多個 PDF 合併成一個文件,將 PDF 文件拆分為多個單獨的文檔,並在 PDF 頁面上加入水印、註釋、頁眉和頁腳。

PDF 轉換

將多種檔案格式,包括 Word、Excel 和圖片檔案,轉換為 PDF。 IronPDF也支援PDF轉換為圖片(PNG,JPEG 等。).

性能與可靠性

高性能和可靠性是工業環境中期望的設計特性。 開發人員可以輕鬆管理大型文件集。

安裝 IronPDF

若要獲取在 .NET 專案中處理 PDF 所需的工具,請安裝 IronPDF 套件。

dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
VB   C#

將 HttpListener C# 與 IronPDF 集成

這是一個綜合示例,展示了如何使用 IronPDF 創建和提供 PDF 文件以及設置 HttpListener:

using System;
using System.Net;
using System.Text;
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        HttpListener listener = new HttpListener();
        // Step 2: Configure URI prefixes
        listener.Prefixes.Add("http://localhost:8080/");
        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on http://localhost:8080/");
        // Step 4: Handle incoming requests
        while (true)
        {
            // Wait for an incoming request
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");
            // Generate PDF using IronPDF
            var htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>";
            var pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent);
            // Get the PDF as a byte array
            byte[] pdfBytes = pdf.BinaryData;
            // Create a response
            HttpListenerResponse response = context.Response;
            // Set the content length and type
            response.ContentLength64 = pdfBytes.Length;
            response.ContentType = "application/pdf";
            // Write the PDF to the response output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(pdfBytes, 0, pdfBytes.Length);
            }
            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
using System;
using System.Net;
using System.Text;
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        HttpListener listener = new HttpListener();
        // Step 2: Configure URI prefixes
        listener.Prefixes.Add("http://localhost:8080/");
        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on http://localhost:8080/");
        // Step 4: Handle incoming requests
        while (true)
        {
            // Wait for an incoming request
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");
            // Generate PDF using IronPDF
            var htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>";
            var pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent);
            // Get the PDF as a byte array
            byte[] pdfBytes = pdf.BinaryData;
            // Create a response
            HttpListenerResponse response = context.Response;
            // Set the content length and type
            response.ContentLength64 = pdfBytes.Length;
            response.ContentType = "application/pdf";
            // Write the PDF to the response output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(pdfBytes, 0, pdfBytes.Length);
            }
            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

包含的C#代碼展示了如何連接IronPDF 的 HTML 轉 PDF 轉換使用 HttpListener 動態生成和傳遞 PDF 文件,以及如何設置它以作為基本 HTTP 方法伺服器運行。 第一步是創建一個 HttpListener 的實例,並設置為在 http://localhost:8080/ 上接收 HTTP 請求。

啟動監聽器後,一個無限循環會負責處理傳入的請求。 該代碼記錄每個請求的請求 URL,使用 IronPDF 從 HTML 文本創建 PDF 文檔,然後將 PDF 轉換為位元組數組。 接下來,回應會設定為正確的 MIME 類型(應用程式/pdf)和內容長度。

HttpListener C#(開發人員使用方式):圖 5

在將 PDF 位元組陣列寫入響應輸出流後,關閉第一個響應流以將其發回給客戶端。 通過這種配置,伺服器可以有效地在回應 HTTP 請求時返回動態創建的 PDF 文件。

HttpListener C#(開發者的工作方式):圖 6

結論

總結來說,結合使用IronPDF和C#的HttpListener提供了一種可靠的方法來動態創建和通過HTTP傳送PDF文件。 藉助HttpListener,C#應用程式可以創建輕量級的HTTP伺服器,能夠處理進入的請求並提供靈活的響應生成。 透過使用 IronPDF 的動態 HTML 到 PDF 轉換功能,開發者可以直接從伺服器端邏輯有效地生成自訂或數據驅動的 PDF 報告、發票或其他文件。

需要透過網絡介面或 API 實時生成和傳送文件的應用程式可能會發現這種組合特別有用。 開發人員可以使用 HttpListener 和 IronPDF 實現可擴展和響應迅速的解決方案,以滿足特定的業務需求。 這些工具藉由促進文件在網路上的無縫生成和傳遞來增強用戶體驗。

您可以使用IronPDF提升您的.NET開發工具箱,使用OCR、處理條碼、創建PDF、連結到Excel,以及更多其他功能。IronSoftware 授權選項提供更大的網頁應用和功能,並通過更高效的開發,以起價 $749 為開端。這是透過結合其基本基礎與高度靈活的Iron Software套件和技術來實現的。

透過明確列出專為專案量身定制的授權可能性,選擇最佳模型的過程將為開發人員簡化。 這些優勢讓開發人員能夠以有效、及時和協調的方式應用解決方案於各種問題。

< 上一頁
Autofac C#(它如何為開發人員工作)
下一個 >
AutoFixture C#(開發人員的工作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >