C# API 호출 방법

C# API 호출 방법

전제조건

리퀘스트 사양

POST/JSON

레스펀스 사양

JSON

API호출

레스펀스의 json문자열은 각각의 Model에 넣는것도 좋지만 그대로 쓴다면 JObject가 편할 듯 합니다.

GetResponse

public JObject GetResponse(string apiUrl, string jsonParameter)
{
	JObject response = null;
	try
	{
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
		request.Method = "POST";
		request.ContentType = "application/json;";
		// 커스텀 헤더가 필요한 경우(인증 토큰 등)
		request.Headers.Add("custom-api-param", "value");

		using (var streamWriter = new StreamWriter(request.GetRequestStream()))
		{
			streamWriter.Write(jsonParameter);
		}

		var httpResponse = (HttpWebResponse)request.GetResponse();

		// HttpStatusCode의 판단이 필요한 경우
		if(httpResponse.StatusCode != HttpStatusCode.OK)
		{
			throw new Exception("API호출에 실패");
		}

		using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
		{
			response = JObject.Parse(streamReader.ReadToEnd());
		}

		// ex) response["status"]:"success"
	}
	catch (WebException wex)
	{
		// 200이외의 경우
		if (wex.Response != null)
		{
			using (var errorResponse = (HttpWebResponse)wex.Response)
			{
				using (var reader = new StreamReader(errorResponse.GetResponseStream()))
				{
					response = JObject.Parse(reader.ReadToEnd());
				}
			}
		}
	}
	
    return response;
}

API호출

var apiUrl = "http://apiurl/v1/getHogepoyo"
var jsonParameter = new JavaScriptSerializer().Serialize(new
{
	name = "Name",
	email = "EmailAddress",
	password = "Password",
	detail_info = new {
			info1 = "info1",
			info2 = "info2"}
	});

JObject response = GetResponse(apiUrl, jsonParameter);

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora