C# 프로그램에서 웹 사이트 POST 쿠키 로그인 방법 (콘솔 홈페이지 cookie 포스트 전달 저장)
C#으로 프로그램에서 웹에 POST로 로그인 하면서 쿠키 값을 받아오고
다른 페이지 정보를 읽을 때 받은 쿠키값을 전달하면서 사이트에 로그인한 상태로 접근 하는 방법 입니다
프로그램 구조
로그인하면서 쿠키 얻고 -> 얻은 쿠키로 원하는 페이지 열고 -> 열린 페이지의 html을 C:\Text.txt 파일로 저장 합니다
C#을 공부하는 중 막무가네 코딩을 했습니다
(당장에 필요한 프로그램을 만들어보면서 동기 부여와 성취감을 위해서 입니다)
모든 매서드 들이 static이 붙어 있는데
C# 객체 지향 프로그램을 이해 못한 관계로 어떤 방식으로 알아봐야 겠습니다
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace 휴향림 로그인
{
class Program
{
static string bufferint ="";
static void Main(string[] args)
{
// Console.WriteLine(mainLogin());
saveFile(loginImageURL(mainLogin()));
}
//페이지 로그인 하면서 쿠키를 받아롬
static HttpWebResponse mainLogin()
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.huyang.go.kr/user/member/User_memberLoginPrc.action");
req.Method = "Post";
string s = "userId=여기에 아이디를 적으세요&userPass=여기에 비밀번호를 적으세요"; //input테그 목록을 참조해서 바꿈
req.CookieContainer = new CookieContainer();
req.ContentLength = s.Length;
req.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
TextWriter w = (TextWriter)new System.IO.StreamWriter(req.GetRequestStream());
w.Write(s);
w.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
TextReader r = (TextReader)new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("EUC-KR"));
// Console.WriteLine(r.ReadToEnd());
Console.WriteLine("로그인 성공");
return resp;
}
static string loginImageURL(HttpWebResponse resp)
{
string htmlBuffer = "";
HttpWebResponse respBuffer = resp;
respBuffer = resp;
Console.WriteLine("페이지 로드중");
bufferint = "http://www.huyang.go.kr/user/reservation/User_reservationSearch.action";
//로그인 (사용자 인증 후에 할 일)
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(bufferint);
//세션 쿠키 유지
req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(respBuffer.Cookies);
respBuffer = (HttpWebResponse)req.GetResponse();
TextReader r = (TextReader)new StreamReader(respBuffer.GetResponseStream(), Encoding.GetEncoding("EUC-KR"));
// Console.WriteLine(r.ReadToEnd());
htmlBuffer = r.ReadToEnd();
return htmlBuffer;
}
static private void saveFile(string r)
{
//파일 저장 하는 구간
try
{
//Pass the filepath and filename to the StreamWriter Constructor
StreamWriter sw = new StreamWriter("C:\\Test.txt");
//Write a line of text
sw.WriteLine(r);
//Close the file
sw.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}
'보물창고 > Programming' 카테고리의 다른 글
IIS 모듈 스터디 (0) | 2012.11.14 |
---|---|
자바누리 Java 강좌 소개 - [링크] (자바 스터디, 공부) (2) | 2012.11.13 |
디자인 패턴 정리 (0) | 2012.10.19 |
HTML5 관련 정보 링크 모음 (0) | 2012.05.01 |
JavaScript 팝업, 테이블 동적 생성, 추가, 삭제, 부모, opener, html (0) | 2012.02.20 |
Javascript cookie HTML 이용 웹 프로그래밍 연습 [저장, 삭제, 읽어오기] (0) | 2012.02.17 |
chrome에서 appcache를 사용할때 nodejs socketio의 작동 문제 (0) | 2011.12.28 |
안드로이드 에러, 디바이스에서는 되는데 에뮬에서 안될때 [android, error, device] (0) | 2011.09.22 |