반응형
WebClient / HttpWebRequest
웹 클라이언트 프로그래밍에서 간단한 WebClient 보다 세밀한 제어를 원할 경우, HttpWebRequest와 HttpWebResponse 클래스를 사용할 수 있다. 사실 WebClient는 HttpWebRequest와 HttpWebResponse 클래스를 내부적으로 사용하고 있는 Wrapper 클래스이다.
방법1. WebClient
public JsonResultEntity HttpTest1(string str, int Num)
{
JsonResultEntity entity = new JsonResultEntity();
try
{
string URL = "API 호출주소";
WebClient webClient = new WebClient();
System.Collections.Specialized.NameValueCollection formData = new System.Collections.Specialized.NameValueCollection();
formData["파라미터"] = str;
formData["파라미터"] = Num;
byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);
string result = Encoding.UTF8.GetString(responseBytes);
//결과값음 Json형식으로 변환
entity = JsonConvert.DeserializeObject<JsonResultEntity>(result);
}
catch (Exception e)
{
//통신 실패시 처리로직
}
return entity;
}
방법2. HttpWebRequest
( x-www-form-urlencoded 방식)
public JObject HttpTest2(string str , int Num)
{
string strUri = "API 호출주소"
StringBuilder dataParams = new StringBuilder();
dataParams.Append("str=" + str);
dataParams.Append("&int=" + Num);
// 요청 String -> 요청 Byte 변환
byte[] byteDataParams = UTF8Encoding.UTF8.GetBytes(dataParams.ToString());
try
{
/////////////////////////////////////////////////////////////////////////////////////
/* POST */
// HttpWebRequest 객체 생성, 설정
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
request.Method = "POST"; // 기본값 "GET"
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteDataParams.Length;
// 요청 Byte -> 요청 Stream 변환
Stream stDataParams = request.GetRequestStream();
stDataParams.Write(byteDataParams, 0, byteDataParams.Length);
stDataParams.Close();
// 요청, 응답 받기
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 응답 Stream 읽기
Stream stReadData = response.GetResponseStream();
StreamReader srReadData = new StreamReader(stReadData, Encoding.UTF8, true);
// 응답 Stream -> 응답 String 변환
string strResult = srReadData.ReadToEnd();
result = JObject.Parse(strResult);
}
catch (Exception e)
{
throw e;
}
return result;
}
방법3. HttpWebRequest
( raw 방식)
public APIEntity HttpTest3(string str)
{
//메서드 작성
string content = "{\"method\" : \"메소드명\", \"str \" : [\"" + value + "\"]}";
//Encoding
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(content);
//요청객체 & 요청옵션
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(rpc_url);
request.Method = "POST";
request.PreAuthenticate = true;
request.Headers.Add("Authorization", "인증값");
request.Accept = "text/plain";
//스트림 생성
Stream postStream = request.GetRequestStream();
postStream.Write(data, 0, data.Length);
postStream.Close();
//응답
HttpWebResponse httpresponse = (HttpWebResponse)request.GetResponse();
//응답내용
Stream resultStream = httpresponse.GetResponseStream();
StreamReader reader = new StreamReader(resultStream, Encoding.Default);
//응답내용 읽어 변수에 담기
APIEntity result = JsonConvert.DeserializeObject<APIEntity>(reader.ReadToEnd());
return entity;
}
728x90
반응형
'Programing > .NET' 카테고리의 다른 글
[C#]SFTP 파일 업로드 (0) | 2021.11.08 |
---|---|
[C#] AES256(AES/CBC/PKCS5Padding) 암/복호화 (0) | 2021.03.14 |
[C#] RestSharp 으로 HTTP/HTTPS 통신 (0) | 2020.07.24 |
[C#] Log파일 생성 (0) | 2019.07.30 |
[C#]EUC-KR UTF8변환 (0) | 2018.08.01 |