当前位置:编程学习 > C#/ASP.NET >>

HttpWebRequest 使用 WebProxy 错误


#region 获取网页源码 (返回String)
        /// <summary>
        /// 获取网页源码 (返回String)
        /// </summary>
        /// <param name="enCoding">编码格式</param>
        /// <param name="url">目标URL</param>
        /// <param name="webProxyIp">代理IP</param>
        /// <param name="webProxyPort">代理端口</param>
        /// <returns></returns>
        public static string GetHtmlCode(Encoding enCoding, string url, string webProxyIp, int webProxyPort = 80)
        {
            try
            {
                string str;
                HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);

                /*开始*/
                if (!string.IsNullOrEmpty(webProxyIp))
                {
                    System.Net.WebProxy proxy = new WebProxy(webProxyIp, webProxyPort);
                    proxy.Credentials = CredentialCache.DefaultCredentials;
                    webRequest.Proxy = proxy;
                }
                /*结束*/

                webRequest.Referer = "http://www.baidu.com";
                webRequest.Timeout = 30000;
                webRequest.Method = "GET";
                webRequest.UserAgent = "Mozilla/4.0";
                webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
                HttpWebResponse webResponse = (System.Net.HttpWebResponse)webRequest.GetResponse();
                if (webResponse.ContentEncoding.ToLower() == "gzip")//如果使用了GZip则先解压
                {
                    using (Stream streamReceive = webResponse.GetResponseStream())
                    {
                        using (var zipStream =new GZipStream(streamReceive, CompressionMode.Decompress))
                        {
                            using (StreamReader sr = new System.IO.StreamReader(zipStream, enCoding))
                            {
                                str = sr.ReadToEnd();
                            }
                        }
                    }
                }
                else
                {
                    using (Stream streamReceive = webResponse.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(streamReceive, enCoding))
                        {
                            str = sr.ReadToEnd();
                        }
                    }
                }
                return str;
            }
            catch(Exception ex)
            {
                return ex.Message + "_" + ex.InnerException;
            }
        }
        #endregion





class Program
    {
        static void Main(string[] args)
        {
            //换过多个代理IP,都提示500错误
            string str = WebHelper.GetHtmlCode(Encoding.UTF8, "http://www.baidu.com", "202.97.159.227");
            //不使用代理 正常
            str = WebHelper.GetHtmlCode(Encoding.UTF8, "http://www.baidu.com", null);
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }

--------------------编程问答-------------------- 竟然木有人 --------------------编程问答-------------------- 我很想帮你 可是 我只是打酱油的。。。 --------------------编程问答-------------------- 你确定你的代理可以用?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,