首页 > 代码库 > HttpHelper

HttpHelper

 public class HttpHelper {        private static CookieContainer _cc = new CookieContainer();        private static WebProxy _proxy;        private static int _delayTime;        private static int _timeout = 120000; // The default is 120000 milliseconds (120 seconds).        private static int _tryTimes = 3; // 默认重试3次        private static string _lastUrl = string.Empty;        private static string reqUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)";        // 无 referer 的 Get        public static string Get(string url) {            string data =http://www.mamicode.com/ Get(url, _lastUrl);            _lastUrl = url;            return data;        }        /// <summary>        /// Get data from server        /// </summary>        /// <param name="url"></param>        /// <returns>Return content</returns>        public static string Get(string url, string referer)        {            int failedTimes = _tryTimes;            while (failedTimes-- > 0) {                try {                    DelaySomeTime();                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));                    req.UserAgent = reqUserAgent;                    req.CookieContainer = _cc;                    req.Referer = referer;                    req.Method = "GET";                    req.Timeout = _timeout;                    if (null != _proxy && null != _proxy.Credentials) {                        req.UseDefaultCredentials = true;                    }                    req.Proxy = _proxy;                                        //接收返回字串                    HttpWebResponse res = (HttpWebResponse)req.GetResponse();                    StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);                    return sr.ReadToEnd();                } catch (Exception e) {                    //TraceLog.Error("HTTP GET Error: " + e.Message);                    //TraceLog.Error("Url: " + url);                }            }            return string.Empty;        }        public static void Download(string url, string localfile)        {            WebClient client = new WebClient();            client.DownloadFile(url, localfile);        }        private static void DelaySomeTime()        {            if (_delayTime > 0) {                Random rd = new Random();                int delayTime = _delayTime * 1000 + rd.Next(1000);                Thread.Sleep(delayTime);            }        }        /// <summary>        /// Set Proxy        /// </summary>        /// <param name="server"></param>        /// <param name="port"></param>        public static void SetProxy(string server, int port, string username, string password)        {            if (null != server && port > 0) {                _proxy = new WebProxy(server, port);                if (null != username && null != password) {                    _proxy.Credentials = new NetworkCredential(username, password);                    _proxy.BypassProxyOnLocal = true;                }            }        }        /// <summary>        /// Set delay connect time        /// </summary>        /// <param name="delayTime"></param>        public static void SetDelayConnect(int delayTime)        {            _delayTime = delayTime;        }        /// <summary>        /// Set the timeout for each http request        /// </summary>        /// <param name="timeout"></param>        public static void SetTimeOut(int timeout)        {            if (timeout > 0) {                _timeout = timeout;            }        }        /// <summary>        /// Set the try times for each http request        /// </summary>        /// <param name="times"></param>        public static void SetTryTimes(int times)        {            if (times > 0) {                _tryTimes = times;            }        }    }

 

HttpHelper