재우니의 블로그

web api 의 url 에 맞게 기술하여, post 로 전송하고 데이터는 json 형태라고 header 에 명시 후, stream 으로 json 문자열을 전송합니다. web api 에 응답받아 이를 다시 stream 형태를  문자열로 치환하여 값을 확인 합니다.

/// <summary>
/// 엔카 web api 로 호출
/// luckshim
/// </summary>
/// <param name="jsonStr">The json string.</param>
/// <returns></returns>
public bool SendMailEncar(string jsonStr)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://domain/message/email");
    httpWebRequest.ContentType = "application/json; charset=utf-8";
    httpWebRequest.Method = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        streamWriter.Write(jsonStr);
        streamWriter.Flush();
        streamWriter.Close();
    }

    string result = "";

    try
    {
        using (var response = httpWebRequest.GetResponse() as HttpWebResponse)
        {
            if (httpWebRequest.HaveResponse && response != null)
            {
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    result = reader.ReadToEnd();
                }
            }
        } 

        return true;
    }
    catch (WebException e)
    {
        if (e.Response != null)
        {
            using (var errorResponse = (HttpWebResponse)e.Response)
            {
                using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                {
                    string error = reader.ReadToEnd();
                    result = error;
                }
            }
        }

        return false;
    }
}

json 형태는 아래와 같습니다.

{  
  "seq": 81,  
  "fromEmail": "test@mail.com",  
  "fromName": " 보내는이",     
  "subject": "인증메일 발송",  
  "toEmail": "test@gmail.com",  
  "toName": "받는이"  
} 

각각의 값에 json 형태 사용시 데이터 값을 인코딩해 줘야 합니다. (HttpUtility.JavaScriptStringEncode 설명서)
https://docs.microsoft.com/ko-kr/dotnet/api/system.web.httputility.javascriptstringencode?view=netframework-4.7.2

HttpUtility.JavaScriptStringEncode("내용")

인코딩하면 아래 내용 처럼 <> 이나 몇몇의 특수문자가 인코딩되어 변환이 됩니다.

해당 건은 확인후 연락 드리겠습니다.\u003cbr/\u003e`~!@#%^\u0026*()_+|-=\\[]{};\u0027:\",./\u003c\u003e?\u003cbr/\u003e`~!@#%^\u0026*()_+|-=\\[]{};\u0027:\",./\u003c\u003e?\u003cbr/\u003e\u003cbr/\u003e감사합니다.!!