• 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 = 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;
                }
            }
        }
  • 相关阅读:
    《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化
    《深入理解 Java 虚拟机》读书笔记:Java 内存模型与线程
    《深入理解 Java 虚拟机》读书笔记:晚期(运行期)优化
    《深入理解 Java 虚拟机》读书笔记:早期(编译期)优化
    《深入理解 Java 虚拟机》读书笔记:虚拟机字节码执行引擎
    《深入理解 Java 虚拟机》读书笔记:虚拟机类加载机制
    Java学习书籍推荐
    IntelliJ IDEA之新建项目后之前的项目不见了
    剑指Offer之左旋转字符串
    剑指Offer之和为S的两个数字
  • 原文地址:https://www.cnblogs.com/wlwjc/p/3953027.html
Copyright © 2020-2023  润新知