Http클라이언트 클래스는 URL에서 HTTP 요청/응답을 보내고 받기 위한 기본 클래스를 제공합니다. .NET 프레임워크의 지원되는 비동기 기능입니다. HttpClient는 여러 동시 요청을 처리할 수 있습니다. HttpWebRequest 및 HttpWebResponse 위의 레이어입니다. HttpClient가 있는 모든 메서드는 비동기식입니다. HttpClient는 System.Net.Http 네임스페이스에서 사용할 수 있습니다.
StudentController와 각각의 actionmethod가 있는 WebAPI 응용 프로그램을 만들어 보겠습니다.
학생 모델
namespace DemoWebApplication.Models{ public class Student{ public int Id { get; set; } public string Name { get; set; } } }
학생 컨트롤러
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("https://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의 엔드포인트가 별도의 콘솔 애플리케이션에서 호출되는 것을 볼 수 있습니다.