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;
}
}