HttpClient lớp cung cấp một lớp cơ sở để gửi / nhận các yêu cầu / phản hồi HTTP từ một URL. Nó là một tính năng không đồng bộ được hỗ trợ của .NET framework. HttpClient có thể xử lý nhiều yêu cầu đồng thời. Nó là một lớp trên HttpWebRequest và HttpWebResponse. Tất cả các phương thức với HttpClient là không đồng bộ. HttpClient có sẵn trong không gian tên System.Net.Http.
Hãy để chúng tôi tạo một ứng dụng WebAPI có StudentController và các phương thức hành động tương ứng.
Mô hình sinh viên
namespace DemoWebApplication.Models{ public class Student{ public int Id { get; set; } public string Name { get; set; } } }
Kiểm soát sinh viên
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; } } }
Bây giờ, hãy để chúng tôi tạo ứng dụng bảng điều khiển nơi chúng tôi muốn sử dụng các điểm cuối WebApi đã tạo ở trên để lấy thông tin chi tiết về sinh viên.
Ví dụ
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("https://localhost:58174/api/"); var responseTask = httpClient.GetAsync(url); var result = responseTask.Result; var readTask = result.Content.ReadAsStringAsync(); return readTask.Result; } } } }
Đầu ra
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"}
Trong ví dụ trên, chúng ta có thể thấy rằng các điểm cuối của WebApi được gọi từ ứng dụng bảng điều khiển aseparate.