보물창고/Programming2012.03.05 23:55









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.");

            }

        }

    }

}

 


 
 

 프로젝트 전체 파일 다운 로드

휴향림 로그인.zip



 

저작자 표시
신고





Posted by 파란물