얼마전에 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로..
다른 방법도 있을것이나.. 우선 가장 쉽게 구현하는걸로..
반응형
댓글