using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Collections;
using System.Web;
namespace CnGineAppCode.Comm
{
public class HttpUtility
{
//
//private static readonly string defaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
private static readonly string defaultUserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
private CookieContainer _cookieContainer = new CookieContainer();
public CookieContainer CookieContainer
{
set { this._cookieContainer = value; }
get { return this._cookieContainer; }
}
#region Get请求
public string CreateGet(string url)
{
return CreateGet(url, Encoding.UTF8, null, null);
}
public string CreateGet(string url, Encoding coding)
{
return CreateGet(url, coding, null, null);
}
public string CreateGet(string url, Encoding coding, string userAgent, CookieCollection cookies)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.KeepAlive = false;
//request.ContentType = "application/x-www-form-urlencoded";
//Cookie
if (cookies != null)
CookieContainer.Add(cookies);
request.CookieContainer = CookieContainer;
//userAgent
if (!string.IsNullOrEmpty(userAgent))
request.UserAgent = userAgent;
else
request.UserAgent = defaultUserAgent;
// 提交请求数据
//if (!string.IsNullOrEmpty(para))
//{
// byte[] data = Encoding.ASCII.GetBytes(para);
// using (Stream stream = request.GetRequestStream())
// {
// stream.Write(data, 0, data.Length);
// }
//}
// 接收返回的页面
response = request.GetResponse() as HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, coding);
string srcString = reader.ReadToEnd();
return srcString;
}
#endregion
#region Post请求
public string CreatePost(string url, Hashtable param)
{
return CreatePost(url, Encoding.UTF8, param, null, null);
}
public string CreatePost(string url, Hashtable param, Encoding coding)
{
return CreatePost(url, coding, param, null, null);
}
public string CreatePost(string url, Encoding coding, Hashtable param, string userAgent, CookieCollection cookies)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
//Cookie
if (cookies != null)
CookieContainer.Add(cookies);
request.CookieContainer = CookieContainer;
//userAgent
if (!string.IsNullOrEmpty(userAgent))
request.UserAgent = userAgent;
else
request.UserAgent = defaultUserAgent;
// 提交请求数据
if (param!= null && param.Keys.Count>0)
{
StringBuilder sb = new StringBuilder();
foreach (string key in param.Keys)
{
string value = "";
if (param[key] != null && !string.IsNullOrEmpty(param[key].ToString()))
{
value = System.Web.HttpUtility.UrlEncode(param[key].ToString(), coding);
}
sb.AppendFormat("{0}={1}&", key, value);
}
byte[] data = Encoding.ASCII.GetBytes(System.Text.RegularExpressions.Regex.Replace(sb.ToString(), "&$", ""));
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
// 接收返回的页面
response = request.GetResponse() as HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, coding);
string srcString = reader.ReadToEnd();
return srcString;
}
#endregion
}
}