C# 实现 HTTP POST & GET 请求教程

4星 · 超过85%的资源 需积分: 10 12 下载量 24 浏览量 更新于2024-09-22 收藏 19KB TXT 举报
"C# 发送 POST 和 GET 请求的公共类" C# 是一种常用的编程语言,用于构建各种应用程序,包括与服务器交互的 Web 应用。在 Web 开发中,POST 和 GET 是两种基本的 HTTP 请求方法。POST 通常用于向服务器提交数据,而 GET 用于从服务器获取数据。在 C# 中,可以使用 `System.Net` 命名空间中的类来实现这些功能。 以下是一个简单的 C# 类,名为 `HttpProc`,它提供了发送 POST 和 GET 请求的功能: ```csharp using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; public class HttpProc { public Encoding Encoding { get; set; } // 设置字符编码 public HttpProc() { this.Encoding = System.Text.Encoding.Default; // 初始化为默认编码 } // 使用 GET 方法发送请求 public string Get(string url) { using (WebClient client = new WebClient()) { client.Encoding = this.Encoding; return client.DownloadString(url); } } // 使用 POST 方法发送请求 public string Post(string url, Dictionary<string, string> formData) { string formDataStr = BuildFormData(formData); byte[] data = Encoding.GetBytes(formDataStr); using (WebClient client = new WebClient()) { client.Encoding = this.Encoding; client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; return client.UploadString(url, "POST", formDataStr); } } // 构建 POST 数据字符串 private string BuildFormData(Dictionary<string, string> formData) { StringBuilder sb = new StringBuilder(); foreach (var pair in formData) { sb.AppendFormat("{0}={1}&", pair.Key, WebUtility.UrlEncode(pair.Value)); } return sb.ToString().TrimEnd('&'); } } ``` 这个 `HttpProc` 类包含两个主要方法:`Get` 和 `Post`。`Get` 方法用于发送 GET 请求,而 `Post` 方法则用于发送 POST 请求。在 `Post` 方法中,我们首先将表单数据转换为字符串,然后通过 `UploadString` 方法发送到指定 URL。 以下是如何使用这个类的示例: ```csharp HttpProc client = new HttpProc(); string responseHtml = client.Get("http://www.baidu.com"); // 获取百度首页内容 Console.WriteLine(responseHtml); Dictionary<string, string> formData = new Dictionary<string, string>(); formData.Add("username", "zhangsan"); formData.Add("password", "123456"); responseHtml = client.Post("http://passport.baidu.com/?login", formData); // 发送登录请求 ``` 在这个例子中,我们首先创建了一个 `HttpProc` 对象,然后使用它来发送 GET 请求到百度主页,并打印返回的 HTML 内容。接着,我们创建了一个包含用户名和密码的表单数据字典,然后用这个数据字典调用 `Post` 方法发送一个模拟的登录请求。 请注意,实际应用中需要处理更多细节,如错误处理、超时设置、重试机制以及可能的证书验证等。这个简单的示例旨在展示如何使用 C# 进行基本的 HTTP 请求。