본문 바로가기
프로그래밍

c# webClient를 이용해 POST로 API 호출하는 방법

by 도장깨기 2021. 4. 14.
728x90
반응형

 

안녕하세요.

 

오늘은 API 호출 할때 많이 쓰이는 HTTP Method중 post 호출 샘플을 다뤄볼거에요.

 

다양한 방식으로 호출할 수 있지만 저는 오늘 WebClient를 이용해서 해볼건데요.

 

 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace Test
{
	public class ApiCall
	{
		private WebClient _client;

		public string ExecuteService(string url, string data)
		{
			try
			{
				SetWebClientHeader();
				return _client.UploadString(url, data); 
			}
			catch(Exception e)
			{
				throw e;
			}
		}

		private void SetWebClientHeader()
		{
			try
			{
            			_client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
            			_client.Headers.Add(HttpRequestHeader.AcceptLanguage, "ko-KR");
            			_client.Headers.Add(HttpRequestHeader.Authorization,  token);
               	 		_client.Encoding = Encoding.UTF8;
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

	}
}

 

먼저 WebClient 사용을 위해 System.net을 참조해 주시고,

 

SetWebClientHeader에서 호출할 api의 헤더를 설정해주시면되는데 

저같은 경우는 샘플로 ContentType이나 Authorization등을 설정해 줬어요.

 

실제로 POST를 실행하는 부분은  UploadString이에요. 

url에 호출할 api의 url을 설정해 주시면되고 

data의 경우 호출할 api의 body를 설정해주시면되요.

 

이제 이해를 돕기위해 위를 이용해서 api를 호출해볼건데요.

 

	public class Result
	{
    		public string code {get;set;}
         	public string message {get;set;}
	}
    
  	public class Test
    	{
    		public string test {get;set;}
    	}

이런식으로 body 로 넣을 모델과 response를 받을 모델을 만들어주고요.

 

 

 

public Result Test(){
	try
    	{
    		Result result = new Result();
    		string url = "www.test.com/test/api";
        	Test test = new Test()
        	{
        		test = "test";
        	};
        	string data = JsonConvert.SerializeObject(ecomCon, Formatting.Indented, new JsonSerializerSettings
        	{
        	NullValueHandling = NullValueHandling.Ignore
        	});
        
        	string response = ExecuteService(url, data);
        
        	result = new JavaScriptSerializer().Deserialize<Result>(response);
    	}
    	catch(Exception ex)
    	{
 		   	throw ex;
    	}
}

 

이런식으로 이용하시면되는데요. 

 

저 같은 경우 JsonConvert를 이용해 null 값을 제외해서 Body를 많이 만들어 주고 있어요.

json 변환 같은 경우 다양한 방식이 있으니 서치 해보시면 될꺼같아요!

 

위에서 작성해준 ExecuteService에다가 호출할 url과 변환한 json을 넣어주면 

위에서 uploadString으로 post 호출해주고 

결과값 response를 Deserialize해서 자신이 원하는 형태로 

값을 담아 사용할 수 있어요~

 

 

 

오늘은 간단히 WebClient를 이용한 Post api 호출 샘플을 작성해 보았는데요~

Test 코드로 작성한것이기 때문에 좀더 자세하게 알고 싶으시다면 

댓글로 남겨주시면 답변드리겠습니다!

 

감사합니다~

 

 

728x90
반응형

댓글