반응형
WebClient 사용하여 HTTP 사용하기
C#에서 HTTP를 사용하기 위해서는 여러 방법이 있다. 간단하게는 System.Net.WebClient 클래스를 사용할 수 있으며, 좀 더 세밀한 제어를 위해서는 System.Net.HttpWebRequest 클래스를 사용할 수 있다. 아래는 WebClient 클래스를 사용하여 웹사이트의 HTML을 가져오는 예제이다.
using System.Net;
string url = "http://www.google.com";
WebClient webClient = new WebClient();
string html = webClient.DownloadString(url);
HttpWebRequest를 사용하여 HTTP 사용하기
C#에서 좀 더 세밀하게 HTTP를 제어할 필요가 있을 때는, System.Net.HttpRequest 클래스를 사용할 수 있다.
예를 들어, HttpWebRequest.Timeout 속성을 사용하여 타임아웃을 지정하거나, HttpWebRequest.KeepAlive 기능을 Enable/Disable 하는 등의 여러 제어를 설정할 수 있다. 아래는 HttpWebRequest 클래스를 사용하여 HTML을 가져오는 예제이다. 단순히 HTML을 가져오는 코드는 훨씬 간단하겠지만, 몇 가지 추가적인 속성 설정들을 추가하였다.
using System.Net;
string url = "https://httpbin.org/get"; //테스트 사이트
string responseText = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Timeout = 30 * 1000; // 30초
request.Headers.Add("Authorization", "BASIC SGVsbG8"); // 헤더 추가 방법
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
HttpStatusCode status = response.StatusCode;
Console.WriteLine(status); // 정상이면 "ok"
Stream responseStream = response.GetResponseStream();
using (streamReader sr = new streamReader(responseStream))
{
responseText = sr.ReadToEnd();
}
}
Console.WriteLine(responseText);
HttpClient를 사용해서 HTTP 사용하기
.NET 4.5와 .NET Core에서 HttpClient 클래스를 지원하게 되었는데, HttpClient 클래스는 모든 IO메서드들을 비동기로 처리하는 기능을 가지며, 특히 C# await를 사용하여 자연스럽게 비동기 HTTP 호출을 할 수 있다. 아래는 HttpClient 클래스를 사용하여 웹사이트에서 HTML을 가져오는 예제이다.
using System.Net.Http;
static async void GetHtml()
{
using(var client = new HttpClient())
{
var response = await client.GetStringAsync("https://www.naver.com");
Console.WriteLine(response);
}
}
- WebClient
- HttpWebRequest
- HttpClient
등은 웹 클라이언트 기능을 갖는다. 웹서버 기능은 IIS/ASP.NET을 비롯하여 여러 웹 서버 및 웹서버 프로그래밍을 통해 이루어진다.
출처
'프로그래밍 > C#' 카테고리의 다른 글
C# 비동기 프로그래밍 시작하기 (0) | 2024.10.08 |
---|---|
C# HttpClient.PostAsync 사용하기 (0) | 2024.10.07 |
IEnumerable vs IQueryable 어떻게 다른지 알아보자 (0) | 2024.09.25 |
C# Trim() 메서드에 대해서 (0) | 2024.09.10 |
C# list 검색 시 First() vs Find() 차이점 (0) | 2024.06.24 |
댓글