본문 바로가기
프로그래밍/C#

C# HttpClient.PostAsync 사용하기

by bantomak 2024. 10. 7.

HttpClient란 무엇인가?

HttpClient은 HTTP 요청을 처리하기 위해서 설계된 .NET 라이브러리 내에 존재하는 클래스이다.

HttpClient의 장점

  • 비동기 실행(Asynchronous Operations) : 응답을 기다리는 동안 다른 처리가 가능하다.
  • 재사용성(Reusable) : 하나의 인스턴스로 여러 요청에 사용이 가능하다.
  • 유연성(Flexibility) : HTTP 메소드와 커스텀 가능한 헤더를 지원한다.

HttpClient.PosyAsync는 특정한 URL에 대해서 POST 방식으로 비동기로 데이터 송신을 가능하게 한다.

기본 예제

HttpClient client = new HttpClient();

HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");

HttpResponseMessage response = await client.PostAsync("https://api.example.com/data", content);

JSON 포멧으로 비동기 POST를 보내는 기본 예제이다.

플레인 텍스트

var client = new HttpClient();

var content = new StringContent("This is some data", Encoding.UTF8, "text/plain");

HttpResponseMessage response = await client.PostAsync("https://postman-echo.com/post", content);

JSON 데이터

var json = "{\"name\":\"John\", \"city\":\"New York\"}";

var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", content);

헤더 추가하기

var client = new HttpClient();

client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_TOKEN_HERE");

인증 추가하기

var client = new HttpClient();

var byteArray = Encoding.ASCII.GetBytes("username:password");

client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

에러 핸들링 예제

try
{
    var response = await client.PostAsync(uri, content);
    response.EnsureSuccessStatusCode();
}
catch(HttpRequestException e)
{
    Console.WriteLine($"Request error: {e.Message}");
}

실전 예제

기본적인 뼈대가 되는 실전 예제를 살펴보자.

 

public class RestClient
{
    private static readonly HttpClient client = new HttpClient();

    public async Task<string> PostDataAsync(string uri, string jsonData)
    {
        var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

        var response = await client.PostAsync(uri, content);
        response.EnsureSuccessStatusCode();
        
        return await response.Content.ReadAsStringAsync();
    }
}

정리하자면

HttpClient.PostAsync는 POST 요청을 보내기 위한 멋진 툴이다. 직관적이고, 유연하고 강력하다. 간단한 데이터부터 복잡한 인증 요청까지 모두 커버 가능하다. C# HttpClient를 잘 다루게 되면 웹을 통한 상호작용을 더 부드럽고 효과적으로 다룰 수 있을 것이다.

 

참고 사이트

 

What is HttpClient.PostAsync in C#? Complete Guide 2024 - ByteHide

In this guide, we're going to dive into HttpClient.PostAsync, having a look at basics concepts, advantages of using HttpClient in C#, best practices, some

www.bytehide.com

댓글