using System.Web;
    using System.Net;
    using System.Diagnostics;
    using System.Text.RegularExpressions;
    using System.IO;

    class Program
    {
        static void Main(string[] args)
        {

            Stopwatch sw = new Stopwatch();
            sw.Start();
            NewMethod(sw);
            //得到编码();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com/");
            request.CookieContainer = new CookieContainer();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            foreach (Cookie cook in response.Cookies)
            {

                Console.WriteLine("------------------------------------------------------");
                Console.WriteLine("Cookie:");
                Console.WriteLine("{0} = {1}", cook.Name, cook.Value);
                Console.WriteLine("Domain: {0}", cook.Domain);
                Console.WriteLine("Path: {0}", cook.Path);
                Console.WriteLine("Port: {0}", cook.Port);
                Console.WriteLine("Secure: {0}", cook.Secure);

                Console.WriteLine("When issued: {0}", cook.TimeStamp);
                Console.WriteLine("Expires: {0} (expired? {1})",
                    cook.Expires, cook.Expired);
                Console.WriteLine("Don't save: {0}", cook.Discard);
                Console.WriteLine("Comment: {0}", cook.Comment);
                Console.WriteLine("Uri for comments: {0}", cook.CommentUri);
                Console.WriteLine("Version: RFC {0}", cook.Version == 1 ? "2109" : "2965");

                // Show the string representation of the cookie.
                Console.WriteLine("String: {0}", cook.ToString());
            }
            Console.WriteLine(response.Cookies.Count);
            Console.WriteLine(sw.ElapsedMilliseconds);
            Console.ReadKey();




            Console.ReadKey();
        }

        private static void NewMethod(Stopwatch sw)
        {
            string CookiesPath = Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
            //C:\Users\A\AppData\Local\Microsoft\Windows\INetCookies
            WebClientExt w = new WebClientExt();
            string cookie = string.Empty;
            var 网页 = w.Get("http://www.baidu.com/", Encoding.UTF8, ref cookie);

            Match m = Regex.Match(网页, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
            string 编码 = m.Groups[2].Value;

            sw.Stop();
            Console.WriteLine(cookie);
            Console.WriteLine(编码);
            //Console.WriteLine(网页);
        }

        private static void 得到编码()
        {
            WebRequest hwr = WebRequest.Create(@"http://www.baidu.com/");
            HttpWebResponse hwp = hwr.GetResponse() as HttpWebResponse;
            string text;
            StreamReader sr;
            string code = hwp.ContentType;//得到编码了    
            Console.WriteLine(hwp.ContentEncoding);
            Console.WriteLine(hwp.StatusDescription);
            var abc = hwp.Cookies;
            foreach (Cookie cook in hwp.Cookies)
            {
                Console.WriteLine("Cookie:");
                Console.WriteLine("{0} = {1}", cook.Name, cook.Value);
                Console.WriteLine("Domain: {0}", cook.Domain);
                Console.WriteLine("Path: {0}", cook.Path);
                Console.WriteLine("Port: {0}", cook.Port);
                Console.WriteLine("Secure: {0}", cook.Secure);

                Console.WriteLine("When issued: {0}", cook.TimeStamp);
                Console.WriteLine("Expires: {0} (expired? {1})",
                    cook.Expires, cook.Expired);
                Console.WriteLine("Don't save: {0}", cook.Discard);
                Console.WriteLine("Comment: {0}", cook.Comment);
                Console.WriteLine("Uri for comments: {0}", cook.CommentUri);
                Console.WriteLine("Version: RFC {0}", cook.Version == 1 ? "2109" : "2965");

                // Show the string representation of the cookie.
                Console.WriteLine("String: {0}", cook.ToString());
            }
            Console.WriteLine(code);
            //code = code.Split('=')[1];
            //Console.WriteLine(code);
            //Stream rep = hwp.GetResponseStream(); switch (code)
            //{
            //    case "utf-8":
            //        sr = new StreamReader(rep, Encoding.UTF8);
            //        text = sr.ReadToEnd(); break;
            //    case "gb2312":
            //        sr = new StreamReader(rep, Encoding.GetEncoding("gb2312"));
            //        text = sr.ReadToEnd(); break;
            //    default: break;
            //}

        }
    }

public class WebClientExt
   {
       public string Get(string Url, Encoding Encoder, ref string CookieStr)
       {
           string result = "";
           using (WebClient myClient = new WebClient())
           {
               myClient.Headers.Add("Accept: */*");
               myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)");
               myClient.Headers.Add("Accept-Language: zh-cn");
               myClient.Headers.Add("Content-Type: multipart/form-data");
               myClient.Headers.Add("Accept-Encoding: gzip, deflate");
               myClient.Headers.Add("Cache-Control: no-cache");
               if (CookieStr != "")
               {
                   myClient.Headers.Add(CookieStr);
               }
               //myClient.Encoding = Encoder;
               result = myClient.DownloadString(Url);
               if (CookieStr == "")
               {
                   CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString();
                   CookieStr = GetCookie(CookieStr);
               }
           }
           return result;
       }
       public string Post(string Url, Encoding Encoder, ref string CookieStr, string Data)
       {
           string result = "";
           using (WebClient myClient = new WebClient())
           {
               myClient.Headers.Add("Accept: */*");
               myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)");
               myClient.Headers.Add("Accept-Language: zh-cn");
               myClient.Headers.Add("Content-Type: multipart/form-data");
               myClient.Headers.Add("Accept-Encoding: gzip, deflate");
               myClient.Headers.Add("Cache-Control: no-cache");
               if (CookieStr != "")
               {
                   myClient.Headers.Add(CookieStr);
               }
               myClient.Encoding = Encoder;
               result = myClient.UploadString(Url, Data);
               if (CookieStr == "")
               {
                   CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString();
                   CookieStr = GetCookie(CookieStr);
               }
           }
           return result;
       }
       private string GetCookie(string CookieStr)
       {
           string result = "";
 
           string[] myArray = CookieStr.Split(',');
           if (myArray.Count() > 0)
           {
               result = "Cookie: ";
               foreach (var str in myArray)
               {
                   string[] CookieArray = str.Split(';');
                   result += CookieArray[0].Trim();
                   result += "; ";
               }
               result = result.Substring(0, result.Length - 2);
           }
           return result;
       }
   }

 

posted on 2014-10-26 22:01  Cherbim  阅读(313)  评论(0)    收藏  举报

这是页脚