Cookieの取得(未テスト)

4598 ワード

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;



namespace Cookie

{

    class Program

    {

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        static extern int InternetSetCookieEx(string lpszURL, string lpszCookieName, string lpszCookieData, int dwFlags, IntPtr dwReserved);



        static void Main(string[] args)

        {

            String cookie = GetCookies("http://www.baidu.com/");

            Console.WriteLine(cookie);

        }



        public static string GetCookies(string url)

        {

            uint datasize = 256;

            StringBuilder cookieData = new StringBuilder((int)datasize);

            if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))

            {

                if (datasize < 0)

                    return null;

                cookieData = new StringBuilder((int)datasize);

                if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))

                    return null;

            }

            return cookieData.ToString();

        }

    }

}