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감사합니다.!!