C# 에서 GET 혹은 POST 방식으로 http 리퀘스트를 보내는 예제입니다.
HttpWebRequest 인스턴스의 CookieContainer 를 이용하면 쿠키도 설정할 수 있습니다.
한글 값을 POST 방식으로 전송할 경우 UTF8 인코딩을 해서
바이트 데이터로 바꾼 후 HttpWebRequest 에 추가해 주시면 됩니다.
HttpWebRequest wReq; HttpWebResponse wRes; private bool getResponse(String url, string cookie, string data) { string cookie; try { uri = new Uri(url); // string 을 Uri 로 형변환 wReq = (HttpWebRequest)WebRequest.Create(uri); // WebRequest 객체 형성 및 HttpWebRequest 로 형변환 wReq.Method = "GET"; // 전송 방법 "GET" or "POST" wReq.ServicePoint.Expect100Continue = false; wReq.CookieContainer = new CookieContainer(); wReq.CookieContainer.SetCookies(uri, cookie); // 넘겨줄 쿠키가 있을때 CookiContainer 에 저장 /* POST 전송일 경우 byte[] byteArray = Encoding.UTF8.GetBytes(data); Stream dataStream = wReq.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); */ using (wRes = (HttpWebResponse)wReq.GetResponse()) { Stream respPostStream = wRes.GetResponseStream(); StreamReader readerPost = new StreamReader(respPostStream, Encoding.GetEncoding("EUC-KR"), true); resResult = readerPost.ReadToEnd(); } return true; } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) { var resp = (HttpWebResponse)ex.Response; if (resp.StatusCode == HttpStatusCode.NotFound) { // 예외 처리 } else { // 예외 처리 } } else { // 예외 처리 } return false; } } // 활용 예제 private void searchBoard(PortalBoard[] board, string boardId, int sPage, int ePage, string query) { MainForm.gridView.Columns[4].HeaderText = "조회수"; for (int i = 0; i < 10 * 10; i++) { board[i] = new PortalBoard(); } for (int pageNum = sPage; pageNum <= ePage; pageNum++) { byte[] b = System.Text.Encoding.GetEncoding(51949).GetBytes(query); string result = ""; foreach (byte ch in b) { result += ("%" + string.Format("{0:x2} ", ch)); // EUC-KR 인코딩 } string url = "http://portal.unist.ac.kr/EP/web/collaboration/bbs/jsp/BB_BoardLst.jsp?boardid=" + boardId + "&nfirst=" + pageNum + "&searchcondition=BULLTITLE&searchname=" + result.Replace(" ",""); if (!getResponse(url)) // HttpWebRequest 전송 return; doc = (IHTMLDocument2)new HTMLDocument(); // 파징을 위해 IHTMLDocument2 객체 생성 // IHTMLDocument1, IHTMLDocument2, IHTMLDocument3, IHTMLDocument4 // 데이터형 마다 사용할 수 있는 함수 종류 다름. msdn 참고 doc.clear(); doc.write(resResult); doc.close(); IEnumerabletitles = ElementsByClass(doc, "ltb_left"); IEnumerable elements = ElementsByClass(doc, "ltb_center"); // 파징 후 각자 활용 } }
이 소스코드를 활용하면 C#에서도 REST 요청이 가능한가요??
답글삭제Carpedm20: [C] Httpwebrequest 로 Http Get, Post 전송 및 처리 >>>>> Download Now
답글삭제>>>>> Download Full
Carpedm20: [C] Httpwebrequest 로 Http Get, Post 전송 및 처리 >>>>> Download LINK
>>>>> Download Now
Carpedm20: [C] Httpwebrequest 로 Http Get, Post 전송 및 처리 >>>>> Download Full
>>>>> Download LINK