본문 바로가기
Programming/WPF

C#에서 RestAPI호출하기

by 곰네Zip 2022. 7. 22.

얼마전에 C#에서 RestAPI서버에 무언가를 요청하고 받아올 일이 있었다. 그때 기억을 되새기며..

RestAPI를 호출하려면 서버에 요청하고 받아와야겠지?

일일이 포트 뚫고.. 처리해야할..

필요가 없다. .net을 잘 활용해야지.

HttpClient를 이용하여 웹 요청을 주고받을 수 있다. 예전에는 HttpWebRequest를 사용했었는데, 이것은 deprecated. 그리고 그 대체제로 HttpClient가 나왔으니.. 이제 그걸로 사용하자. 

사용법은 간단하다.

using Newtonsoft.Json; //Json으로 파라미터 보낼거면. 요거쓰자. 
using System.Net;

public async Task<HttpResponseMessage> PostAPICall(string url, object param){
   HttpClient client = new HttpClient();
   client.BaseAddress = new Uri(url);
   //만약 파라미터를 json으로 보낼려면 RequestHeader에 application/json으로..  
   client.DefaultRequestHeaders.Accept.Clear();
   client.DefaultRequestHeaders.Accept.Add(
   			new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                        
   //만약 토큰이 필요하다면?
   string tokenValue = "토큰";
   client.DefaultRequestHeaders.Add("Authorization", "Bearer" + tokenValue);
   
   //json으로 파라미터 보낼거면..
   var json = JsonConvert.SerializeObject(param);
   var content = new StringContent(param);
   
   //요청!. async로 보내야한다.
   var result = await client.PostAsync(client.BaseAddress, content);
   return result;
}

이런식으로 보내면 된다.

받아온 데이터는 HttpResponseMessage형태이다.

실제 데이터는 HttpResponseMessage.Content를 얻어오면 된다.

Task<string> result = Task.Run<string>(() => response.Content.ReadAsStringAsync());
result.Wait();
string resValue = result.Result;

이렇게 땡겨오면 된다. HttpClient를 사용하여 요청할때에는 가급적 Async로..

 

다른 방법도 있을것이나.. 우선 가장 쉽게 구현하는걸로..

반응형

댓글