数据采集类

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

 

posted @ 2012-12-08 19:45  一千零一夜  阅读(304)  评论(0编辑  收藏  举报