在C#中发送HTTP请求最常用的方式是使用 HttpClient 类,它位于 System.Net.Http 命名空间下,支持异步操作,适合现代应用开发。下面介绍如何用 HttpClient 发起 GET 和 POST 请求。
1. 创建 HttpClient 实例
推荐将 HttpClient 作为单例或在 using 语句中使用,避免资源泄漏。在实际项目中,建议通过依赖注入管理 HttpClient。
var client = new HttpClient(); client.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0");2. 发送 GET 请求
GET 请求用于从服务器获取数据。使用 GetStringAsync 或 GetAsync 方法发起请求。
try { string response = await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts/1"); Console.WriteLine(response); } catch (HttpRequestException e) { Console.WriteLine($"请求出错: {e.Message}"); }如果需要更完整的响应信息(如状态码、响应头),可以使用 GetAsync:
var response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts/1"); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); }3. 发送 POST 请求
POST 请求通常用于向服务器提交数据,比如创建资源。需要构造请求内容,常用的是 JSON 格式。
// 要发送的数据 string jsonData = "{\"title\": \"新文章\", \"body\": \"这是内容\", \"userId\": 1}"; // 包装成 StringContent var content = new StringContent(jsonData, System.Text.Encoding.UTF8, "application/json"); // 发送请求 var response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", content); if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); Console.WriteLine(result); }也可以使用 JsonSerializer(.NET Core/.NET 5+)简化对象序列化:
using System.Text.Json; var postData = new { title = "新文章", body = "这是内容", userId = 1 }; var json = JsonSerializer.Serialize(postData); var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", content);