如何使用 C# 从其他应用程序使用 Asp.Net WebAPI 端点?
csharpserver side programmingprogramming更新于 2025/4/15 0:22:17
HttpClient 类提供了一个用于从 URL 发送/接收 HTTP 请求/响应的基类。它是 .NET 框架支持的异步功能。HttpClient 能够处理多个并发请求。它是 HttpWebRequest 和 HttpWebResponse 上的一层。HttpClient 的所有方法都是异步的。HttpClient 在 System.Net.Http 命名空间中可用。
让我们创建一个具有 StudentController 和相应操作方法的 WebAPI 应用程序。
Student 模型
namespace DemoWebApplication.Models{ public class Student{ public int Id { get; set; } public string Name { get; set; } } }
Student 控制器
using DemoWebApplication.Models; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class StudentController : ApiController{ List<Student> students = new List<Student>{ new Student{ Id = 1, Name = "Mark" }, new Student{ Id = 2, Name = "John" } }; public IEnumerable<Student> Get(){ return students; } public Student Get(int id){ var studentForId = students.FirstOrDefault(x => x.Id == id); return studentForId; } } }
现在,让我们创建一个控制台应用程序,我们希望在其中使用上面创建的 WebApi 端点来获取学生详细信息。
示例
using System; using System.Net.Http; namespace DemoApplication{ public class Program{ static void Main(string[] args){ using (var httpClient = new HttpClient()){ Console.WriteLine("Calling WebApi for get all students"); var students = GetResponse("student"); Console.WriteLine($"All Students: {students}"); Console.WriteLine("Calling WebApi for student id 2"); var studentForId = GetResponse("student/2"); Console.WriteLine($"Student for Id 2: {students}"); Console.ReadLine(); } } private static string GetResponse(string url){ using (var httpClient = new HttpClient()){ httpClient.BaseAddress = new Uri("http://localhost:58174/api/"); var responseTask = httpClient.GetAsync(url); var result = responseTask.Result; var readTask = result.Content.ReadAsStringAsync(); return readTask.Result; } } } }
输出
Calling WebApi for get all students All Students: [{"Id":1,"Name":"Mark"},{"Id":2,"Name":"John"}] Calling WebApi for student id 2 Student for Id 2: {"Id":2,"Name":"John"}
在上面的例子中,我们可以看到 WebApi 的端点是从单独的控制台应用程序调用的。